<?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>&#124;&#124; Micromante Blog &#124;&#124; SocialMediaDesignMarketingDeveloper &#124;&#124; &#187; Programacion</title>
	<atom:link href="http://www.micromante.com/blog/category/programacion/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.micromante.com/blog</link>
	<description>Actualidad, opinion, programacion y diseño grafico...</description>
	<lastBuildDate>Thu, 29 Jul 2010 20:40:23 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Windows Phone 7 en Conferencia</title>
		<link>http://www.micromante.com/blog/2010/05/05/windows-phone-7-en-conferencia/</link>
		<comments>http://www.micromante.com/blog/2010/05/05/windows-phone-7-en-conferencia/#comments</comments>
		<pubDate>Wed, 05 May 2010 20:58:34 +0000</pubDate>
		<dc:creator>micromante</dc:creator>
				<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Opinion]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[Tecnologia & Gatgets]]></category>

		<guid isPermaLink="false">http://www.micromante.com/blog/?p=917</guid>
		<description><![CDATA[Esta mañana he asistido a una mini conferencia sobre el nuevo Windows Phone 7. Durante la conferencia se ha estado hablando del nuevo sistema que va a adaptar Windows para sus teléfonos móviles. Por un lado buscan los programas sin menús, a través del dedo nos movemos en menús continuos de forma horizontal o vertical. [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.micromante.com/blog/imagenes/2010/05/windows-phone-7-inicio.png"><img class="alignleft size-thumbnail wp-image-918" title="windows-phone-7-inicio" src="http://www.micromante.com/blog/imagenes/2010/05/windows-phone-7-inicio-150x150.png" alt="" width="150" height="150" /></a>Esta mañana he asistido a una mini conferencia sobre el nuevo Windows Phone 7. Durante la conferencia se ha estado hablando del nuevo sistema que va a adaptar Windows para sus teléfonos móviles. Por un lado buscan los programas sin menús, a través del dedo nos movemos en menús continuos de forma horizontal o vertical. Esta nueva filosofía de interactividad está siendo integrada por casi todos los dispositivos de hoy día, solo que Windows le llama de otro modo. Buscaran la integración con las redes sociales más conocidas a través de su plataforma de programación SilverLight, con un estilo muy parecido a adobe flash pero bajo la marca Microsoft pero con una filosofía muy similar. A esto Windows le llama Hub, no son carpetas es una especie de scroll gigante con todo el menú dentro.</p>
<p>Por otro lado Windows ha creado un estándar entre sus teléfonos móviles. En tal de buscar una integración entre software y hardware, Microsoft desde ahora pedirá a sus proveedores de teléfonos que se adapten a un estándar en cuanto al tamaño de sus pantallas, existirán dos versiones en el futuro una para los de gama alta y otros para los de gama baja. Siempre se buscara la proporcionalidad de la pantalla grande con la pequeña para que las aplicaciones se ajusten sin problema.<span id="more-917"></span></p>
<p>Sigue la integración de office, ahora integrara one note y otras funcionalidades nuevas en los teléfonos para así crear una experiencia en el campo de la ofimática que pueda llegar a todos. Las plataformas de videojuegos para dispositivos móviles se crearan a partir de <a href="http://es.wikipedia.org/wiki/Microsoft_XNA" target="_blank">XNA </a>es el encargado de mover todo el tema de gráficos en la pantalla del dispositivo y la renderización de gráficos GPL. Podremos conectar con Xbox live a través de nuestro dispositivo, revolucionario ya que antes no se había echo en dispositivo móvil. Podremos jugar una partida en nuestra consola, seguir en el móvil y acabarla en casa de un amigo, a esto le llaman las 3 pantallas.</p>
<p>En cuanto a la música y los programas, Microsoft no ha inventado nada nuevo. Desarrollan el <a href="http://www.windowsmarketplace.com/" target="_blank">Market place</a> que no es ni más ni menos que una especie de AppleStore o Android Market. Con la desventaja que si creamos un programa nosotros tendremos que enviarlo al market place y tendrá que validar el certificado para poder instalarlo en nuestro dispositivo. Una desventaja para muchos y la comodidad de evitar virus y software malicioso para otros.</p>
<p>La plataforma de desarrollo de aplicaciones seguirá siendo Visual Studio, en este caso su última versión en la que tendremos un apartado de programación para Windows phone 7 y un emulador para probar nuestras aplicaciones. Sera recomendable probarlas en un dispositivo físico para que todo funcione bien, ya que un emulador siempre es un emulador.</p>
<p>En cuanto a mi opinión personal, creo que seguire con mi Htc Magic con Android y mi Market con aplicaciones gratuitas. El tema de silverlight como programador flash me parece una buena idea y una plataforma buena para aprender. Quizas cuando tenga algo de tiempo me instale el Visual Studio y me ponga a probar cosillas. Ya contare!</p>
<p>Podéis ver el video de la presentación en la página de la <a href="http://www.eps.ua.es" target="_blank">Politécnica de alicante</a> o en este enlace <a href="https://maktub.eps.ua.es/servicios/video/publico/videosActos.phtml#" target="_blank">https://maktub.eps.ua.es/servicios/video/publico/videosActos.phtml</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.micromante.com/blog/2010/05/05/windows-phone-7-en-conferencia/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Spirit sobre iTouch 3.1.3</title>
		<link>http://www.micromante.com/blog/2010/05/03/spirit-sobre-itouch-3-1-3/</link>
		<comments>http://www.micromante.com/blog/2010/05/03/spirit-sobre-itouch-3-1-3/#comments</comments>
		<pubDate>Mon, 03 May 2010 19:47:54 +0000</pubDate>
		<dc:creator>micromante</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[Tecnologia & Gatgets]]></category>

		<guid isPermaLink="false">http://www.micromante.com/blog/?p=913</guid>
		<description><![CDATA[Hace pocas horas se colgaba en internet una nueva versión del software de hackeo de los dispositivos Apple. Probamos Spirit la nueva versión del hack de jailbreak para iPhone/iTouch. Esta nueva herramienta se pone a día de hoy en cabeza como la herramienta universal de hacking para dispositivos de Apple. He probado este hack a [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.micromante.com/blog/imagenes/2010/05/repos.png"><img class="alignleft size-thumbnail wp-image-914" title="repos" src="http://www.micromante.com/blog/imagenes/2010/05/repos-150x150.png" alt="" width="150" height="150" /></a></p>
<p>Hace pocas horas se colgaba en internet una nueva versión del software de hackeo de los dispositivos Apple. Probamos Spirit la nueva versión del hack de jailbreak para iPhone/iTouch. Esta nueva herramienta se pone a día de hoy en cabeza como la herramienta universal de hacking para dispositivos de Apple. He probado este hack a modo de experiencia y aprendizaje con mi iTouch con el Firmware 3.1.3 original. Adjunto al post un video tutorial del proceso que he seguido. ** Atención este proceso es peligroso si no sabes lo que haces,  está bajo tu responsabilidad usarlo**</p>
<p>Si quieres probarlo en tu dispositivo, lo primero que debes hacer es realizar una copia de seguridad de tu aparato para evitar la pérdida de programas y de música. Descarga <a href="http://www.megaupload.com/?d=XYY5K0D5" target="_blank">Spirit </a>de su página oficial con sus versiones para Mac/Windows. Una vez descargado descomprímelo en tu escritorio, conecta tu manzana al ordenador y pulsa sobre la opción jailbreak. Una vez finalizado marcara con un mensaje de finalización, pulsar quit y listo. Podeis ver el video del proceso a continuación:</p>
<p style="text-align: center;"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="498" height="300" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/SkCyKsGP400&amp;hl=es_ES&amp;fs=1&amp;rel=0&amp;color1=0x006699&amp;color2=0x54abd6" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="498" height="300" src="http://www.youtube.com/v/SkCyKsGP400&amp;hl=es_ES&amp;fs=1&amp;rel=0&amp;color1=0x006699&amp;color2=0x54abd6" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>Lo he estado probando y a modo personal funciona perfectamente con Cidya y ya puedo descargar paquetes de los repositorios. Estoy probando diferentes programas para testearlo pero en principio todo funciona correctamente. A diferencia de la antigua versión de jailbreak que tenía problemas a la hora de apagar el dispositivo ya que al enchufarlo entraba en modo defuse.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.micromante.com/blog/2010/05/03/spirit-sobre-itouch-3-1-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ubuntu 10.04 Lucid Lynx ya esta aquí</title>
		<link>http://www.micromante.com/blog/2010/04/30/ubuntu-10-04-lucid-lynx-ya-esta-aqui/</link>
		<comments>http://www.micromante.com/blog/2010/04/30/ubuntu-10-04-lucid-lynx-ya-esta-aqui/#comments</comments>
		<pubDate>Fri, 30 Apr 2010 08:35:13 +0000</pubDate>
		<dc:creator>micromante</dc:creator>
				<category><![CDATA[Programacion]]></category>
		<category><![CDATA[Unix/Linux]]></category>

		<guid isPermaLink="false">http://www.micromante.com/blog/?p=893</guid>
		<description><![CDATA[Desde hace unos días a través del Web site de ubuntu se podía ya pedir que te enviaran la nueva versión de este popular sistema operativo vía correo ordinario. La pasada versión, yo personalmente realice el pedido de las versiones de Ubuntu y KDE a través de la Web. Consistía simplemente en rellenar un formulario [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.micromante.com/blog/imagenes/2010/04/tecnologiablog_lucid_lynx_ubuntu1004.jpg"><img class="alignleft size-medium wp-image-894" title="tecnologiablog_lucid_lynx_ubuntu1004" src="http://www.micromante.com/blog/imagenes/2010/04/tecnologiablog_lucid_lynx_ubuntu1004-300x223.jpg" alt="" width="300" height="223" /></a>Desde hace unos días a través del Web site de ubuntu se podía ya pedir que te enviaran la nueva versión de este popular sistema operativo vía correo ordinario. La pasada versión, yo personalmente realice el pedido de las versiones de <a href="http://www.ubuntu-es.org/">Ubuntu</a> y <a href="http://www.kde.org/">KDE</a> a través de la Web. Consistía simplemente en rellenar un formulario gratuito y lo recibes en casa a través de carta también de forma totalmente gratuita.</p>
<p>Puedes realizar el pedido de la versión de ubuntu 10.04 y en unos días la tendrás en casa <a href="https://shipit.ubuntu.com/">aquí</a>.</p>
<p>Las novedades mas significativas del nuevo sistema son el cambio de diseño, ahora mas moderno y interactivo. Integración absoluta con redes sociales. Pantalla de inicio mas moderna y gestión de hardware mas eficiente. Mejora en la instalación de drivers propietarios y  mejor integración con dispositivos<a href="http://www.apple.com/es/" target="_blank"> iphone/itouch.</a></p>
<p>En conclusión, te animo a que lo pidas y lo pruebes. Una vez probado si te animas puedes pasarte por aquí y comentar tu experiencia con esta nueva versión de gnome.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.micromante.com/blog/2010/04/30/ubuntu-10-04-lucid-lynx-ya-esta-aqui/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>HTML5 Busca Eliminar Flash Player</title>
		<link>http://www.micromante.com/blog/2010/02/10/html5-busca-eliminar-flash-player/</link>
		<comments>http://www.micromante.com/blog/2010/02/10/html5-busca-eliminar-flash-player/#comments</comments>
		<pubDate>Wed, 10 Feb 2010 22:59:56 +0000</pubDate>
		<dc:creator>micromante</dc:creator>
				<category><![CDATA[Adobe]]></category>
		<category><![CDATA[Opinion]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[Redes]]></category>

		<guid isPermaLink="false">http://www.micromante.com/blog/?p=559</guid>
		<description><![CDATA[Con la publicacion de los &#8220;nuevos proyectos de standart&#8221; como pueda ser el HTML5 quizas deberiamos pararnos a reflexionar a donde pretende llevarnos, que queremos conseguir con esto. Por un lado comenzamos explicando que es exactamente el tal HTML5 que tanto se comenta en la nube, HTML5 es la quinta version del conocido lenguaje basico [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://www.micromante.com/blog/imagenes/2010/02/flash2.png"><img class="alignnone size-medium wp-image-565" title="flash2" src="http://www.micromante.com/blog/imagenes/2010/02/flash2.png" alt="" width="128" height="128" /></a></p>
<p>Con la publicacion de los &#8220;nuevos proyectos de standart&#8221; como pueda ser el HTML5 quizas deberiamos pararnos a reflexionar a donde pretende llevarnos, que queremos conseguir con esto.</p>
<p>Por un lado comenzamos explicando que es exactamente el tal HTML5 que tanto se comenta en la nube, HTML5 es la quinta version del conocido lenguaje basico de la www. Para ello se expecifican dos variables de sintaxis la antigua HTML de texto/html la variante conocida como HTML5 y su variante conocida como XHTML5 basada en aplicacion y xml. <span id="more-559"></span></p>
<p>En breves palabras se habla de una nueva forma de programar en la red donde todo esta mas estandarizado y no necesitaremos plugins para revisar el contenido de ninguna web. HTML 5 establece una serie de nuevos elementos (elementos ya conocidos como flash y java) y atributos que reflejan el uso típico de los sitios web modernos. Con esto lo que se quiere conseguir es que los navegadores que soporten este nuevo estandar no tengan que apoyarse en complementos externos como pueda ser la plataforma de adobe flash.</p>
<p>Muchas plataformas web como puedan ser youtube migraran de Adobe player a HTML5, ya que HTML5 incorpora el formato abierto de vídeo <a href="http://xiph.org/vorbis/">Ogg</a>, ambas cosas implementadas por Firefox en su versión 3.5 aún en <em>beta</em>. Un formato hasta ahora poco utilizado pero de calidad y velocidad muy buenos para la red</p>
<p>Desde la wiki extraigo algunas diferencias que cambiaran desde HTML4, expongo algunas:</p>
<p>Nuevos elementos: article, dialog, Nuevos atributos: media, ping, autofocus, inputmode, min, max, pattern<br />
Elementos eliminados: acronym, applet, basefont, big, center, dir, font, frame, frameset, isindex, noframes, s, strike, tt,</p>
<ul></ul>
<p>Asi que desde mi punto de vista y como programador Flash, creo que mas de uno nos tendremos que poner las pilas y comenzar a aprender HMTL5 porque aunque imagino que la plataforma Adobe se pondra las pilas en este sentido es bueno conocer otros lenguajes y comenzar a expandirnos hacia otras novedades y lenguajes porque solo asi podremos innovar en nuestro trabajo.</p>
<p style="padding-left: 30px;">
]]></content:encoded>
			<wfw:commentRss>http://www.micromante.com/blog/2010/02/10/html5-busca-eliminar-flash-player/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>¿Downcasting y Upcasting?</title>
		<link>http://www.micromante.com/blog/2009/12/13/%c2%bfdowncasting-y-upcasting/</link>
		<comments>http://www.micromante.com/blog/2009/12/13/%c2%bfdowncasting-y-upcasting/#comments</comments>
		<pubDate>Sun, 13 Dec 2009 11:18:31 +0000</pubDate>
		<dc:creator>micromante</dc:creator>
				<category><![CDATA[Programacion]]></category>

		<guid isPermaLink="false">http://www.micromante.com/blog/?p=466</guid>
		<description><![CDATA[Como se puede adivinar, desde el momento que existe algo conocido como upcasting (mover en sentido ascendente por una jerarquía de herencia) debe existir el downcasting (para mover en sentido descendente en una jerarquía). Pero el upcasting es sencillo porque al movernos en sentido ascendente en la jerarquía de clases siempre convergemos en clases más [...]]]></description>
			<content:encoded><![CDATA[<p>Como se puede adivinar, desde el momento que existe algo conocido como upcasting (mover en sentido ascendente por una jerarquía de herencia) debe existir el downcasting (para mover en sentido descendente en una jerarquía). Pero el upcasting es sencillo porque al movernos en sentido ascendente en la jerarquía de clases siempre convergemos en clases más generales. Es decir, cuando se hace un upcast siempre se está en una clase claramente derivada de un ascendente (normalmente solo uno, excepto en el caso de herencia <span id="more-466"></span>múltiple) pero cuando se hace downcast hay normalmente varias posibilidades a las que amoldarse.<br />
Mas concretamente, un Circulo es un tipo de Figura (que sería su upcast), pero si se intenta hacer un downcast de una Figura podría ser un Circulo, un Cuadrado, un Triángulo, etc.<br />
El problema es encontrar un modo seguro de hacer downcast (aunque es incluso más importante preguntarse por qué se está usando downcasting en vez de usar el polimorfismo para que adivine automáticamente el tipo correcto.</p>
<p>class Animal { public: virtual ~Animal(){}}<br />
class Dog : public Animal{};<br />
class Cat : public Animal{}; //Cdo se use dynamic_cast, hay que trabajar con una jerarquía polimórfica (con funciones virtuales) &#8211; debido a que el modeado dinámico usa información almacenada en la VTABLE para determinar el tipo actual. Aquí, la clase base contiene un destructor virtual y esto es suficiente<br />
…<br />
Pet* b = new Cat; // Upcast<br />
Dog* d1 = dynamic_cast&lt;Dog*&gt;(b); // Try to cast it to Dog*: d1 con valor cero<br />
Cat* d2 = dynamic_cast&lt;Cat*&gt;(b); // Try to cast it to Cat*: d2 con puntero a Cat* b</p>
<p>Para eso existe<br />
Dynamic_cast&lt;tipo&gt; es mas lento y usa sobrecarga<br />
Static_cast es mas rapido pero da error cdo eesta mal el cast<br />
(tipo) este es el typecast es menos importante que el static_cast</p>
]]></content:encoded>
			<wfw:commentRss>http://www.micromante.com/blog/2009/12/13/%c2%bfdowncasting-y-upcasting/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Conceptos y Caracteristicas POO</title>
		<link>http://www.micromante.com/blog/2009/11/14/conceptos-y-caracteristicas-poo/</link>
		<comments>http://www.micromante.com/blog/2009/11/14/conceptos-y-caracteristicas-poo/#comments</comments>
		<pubDate>Sat, 14 Nov 2009 14:58:40 +0000</pubDate>
		<dc:creator>micromante</dc:creator>
				<category><![CDATA[Programacion]]></category>

		<guid isPermaLink="false">http://www.micromante.com/blog/?p=360</guid>
		<description><![CDATA[Desde que comenzo este curso 2009, la programacion en mi vida paso de ser lineal y imperativa para convertir en una programacion mas util y facil, ahora ya solo pensamos en objetos , ahora  en el mundo de la programacion orientada a objetos, es importante que todos tengamos algunos conceptos claro antes de comenzar, he [...]]]></description>
			<content:encoded><![CDATA[<p>Desde que comenzo este curso 2009, la programacion en mi vida paso de ser lineal y imperativa para convertir en una programacion mas util y facil, ahora ya solo pensamos en objetos <img src='http://www.micromante.com/blog/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> , ahora  en el mundo de la programacion orientada a objetos, es importante que todos tengamos algunos conceptos claro antes de comenzar, he recogido y resumido algunos sobre mis apuntes de clase<span id="more-360"></span></p>
<h2><span id="Conceptos_fundamentales" class="mw-headline">Conceptos fundamentales</span></h2>
<p>La programación orientada a objetos es una forma de programar que trata de encontrar una solución a estos problemas. Introduce nuevos conceptos, que superan y amplían conceptos antiguos ya conocidos. Entre ellos destacan los siguientes:</p>
<ul>
<li><strong><a title="Clase (informática)" href="http://es.wikipedia.org/wiki/Clase_%28inform%C3%A1tica%29">Clase</a></strong>: definiciones de las propiedades y comportamiento de un tipo de objeto concreto. La instanciación es la lectura de estas definiciones y la creación de un objeto a partir de ellas.</li>
<li><strong><a title="Herencia (informática)" href="http://es.wikipedia.org/wiki/Herencia_%28inform%C3%A1tica%29">Herencia</a>:</strong> (por ejemplo, herencia de la clase D a la clase C) Es la facilidad mediante la cual la clase D hereda en ella cada uno de los atributos y operaciones de C, como si esos atributos y operaciones hubiesen sido definidos por la misma D. Por lo tanto, puede usar los mismos métodos y variables publicas declaradas en C. Los componentes registrados como &#8220;privados&#8221; (private) también se heredan, pero como no pertenecen a la clase, se mantienen escondidos al programador y sólo pueden ser accedidos a través de otros métodos públicos. Esto es así para mantener hegemónico el ideal de OOP.</li>
<li><strong><a class="mw-redirect" title="Objetos (programación orientada a objetos)" href="http://es.wikipedia.org/wiki/Objetos_%28programaci%C3%B3n_orientada_a_objetos%29">Objeto</a></strong>: entidad provista de un conjunto de propiedades o atributos (datos) y de comportamiento o funcionalidad (métodos) los mismos que consecuentemente reaccionan a eventos. Se corresponde con los objetos reales del mundo que nos rodea, o a objetos internos del sistema (del programa). Es una instancia a una clase.</li>
<li><strong><a class="mw-redirect" title="Método (programación orientada a objetos)" href="http://es.wikipedia.org/wiki/M%C3%A9todo_%28programaci%C3%B3n_orientada_a_objetos%29">Método</a></strong>: Algoritmo asociado a un objeto (o a una clase de objetos), cuya ejecución se desencadena tras la recepción de un &#8220;mensaje&#8221;. Desde el punto de vista del comportamiento, es lo que el objeto puede hacer. Un método puede producir un cambio en las propiedades del objeto, o la generación de un &#8220;evento&#8221; con un nuevo mensaje para otro objeto del sistema.</li>
<li><strong>Evento</strong>: Es un suceso en el sistema (tal como una interacción del usuario con la máquina, o un mensaje enviado por un objeto). El sistema maneja el evento enviando el mensaje adecuado al objeto pertinente. También se puede definir como evento, a la reacción que puede desencadenar un objeto, es decir la acción que genera.</li>
<li><strong>Mensaje</strong>: una comunicación dirigida a un objeto, que le ordena que ejecute uno de sus métodos con ciertos parámetros asociados al evento que lo generó.</li>
<li><strong>Propiedad o atributo</strong>: contenedor de un tipo de datos asociados a un objeto (o a una clase de objetos), que hace los datos visibles desde fuera del objeto y esto se define como sus características predeterminadas, y cuyo valor puede ser alterado por la ejecución de algún método.</li>
<li><strong>Estado interno</strong>: es una variable que se declara privada, que puede ser únicamente accedida y alterada por un método del objeto, y que se utiliza para indicar distintas situaciones posibles para el objeto (o clase de objetos). No es visible al programador que maneja una instancia de la clase.</li>
<li><strong>Componentes de un objeto</strong>:atributos, identidad, relaciones y métodos.</li>
<li><strong>Representación de un objeto</strong>: un objeto se representa por medio de una tabla o entidad que esté compuesta por sus atributos y funciones correspondientes.</li>
</ul>
<p>En comparación con un lenguaje imperativo, una &#8220;variable&#8221;, no es más que un contenedor interno del atributo del objeto o de un estado interno, así como la &#8220;función&#8221; es un procedimiento interno del método del objeto.</p>
<h2><span id="Caracter.C3.ADsticas_de_la_POO" class="mw-headline">Características de la POO</span></h2>
<p>Hay un cierto acuerdo sobre exactamente qué características de un método de programación o lenguaje le definen como &#8220;orientado a objetos&#8221;, pero hay un consenso general en que las características siguientes son las más importantes:</p>
<ul>
<li><strong><a class="mw-redirect" title="Abstracción (programación orientada a objetos)" href="http://es.wikipedia.org/wiki/Abstracci%C3%B3n_%28programaci%C3%B3n_orientada_a_objetos%29">Abstracción</a></strong>: Denota las características esenciales de un objeto, donde se capturan sus comportamientos.Cada objeto en el sistema sirve como modelo de un &#8220;agente&#8221; abstracto que puede realizar trabajo, informar y cambiar su estado, y &#8220;comunicarse&#8221; con otros objetos en el sistema sin revelar <em>cómo</em> se implementan estas características. Los procesos, las funciones o los métodos pueden también ser abstraídos y cuando lo están, una variedad de técnicas son requeridas para ampliar una abstracción.</li>
<li><strong><a class="mw-redirect" title="Encapsulamiento (programación orientada a objetos)" href="http://es.wikipedia.org/wiki/Encapsulamiento_%28programaci%C3%B3n_orientada_a_objetos%29">Encapsulamiento</a></strong>: Significa reunir a todos los elementos que pueden considerarse pertenecientes a una misma entidad, al mismo nivel de abstracción. Esto permite aumentar la <a title="Cohesión" href="http://es.wikipedia.org/wiki/Cohesi%C3%B3n">cohesión</a> de los componentes del sistema. Algunos autores confunden este concepto con el principio de ocultación, principalmente porque se suelen emplear conjuntamente.</li>
<li><strong><a title="Principio de ocultación" href="http://es.wikipedia.org/wiki/Principio_de_ocultaci%C3%B3n">Principio de ocultación</a></strong>: Cada objeto está aislado del exterior, es un módulo natural, y cada tipo de objeto expone una <em>interfaz</em> a otros objetos que especifica cómo pueden interactuar con los objetos de la clase. El aislamiento protege a las propiedades de un objeto contra su modificación por quien no tenga derecho a acceder a ellas, solamente los propios métodos internos del objeto pueden acceder a su estado. Esto asegura que otros objetos no pueden cambiar el estado interno de un objeto de maneras inesperadas, eliminando efectos secundarios e interacciones inesperadas. Algunos lenguajes relajan esto, permitiendo un acceso directo a los datos internos del objeto de una manera controlada y limitando el grado de abstracción. La aplicación entera se reduce a un agregado o rompecabezas de objetos.</li>
<li><strong><a class="mw-redirect" title="Polimorfismo (programación orientada a objetos)" href="http://es.wikipedia.org/wiki/Polimorfismo_%28programaci%C3%B3n_orientada_a_objetos%29">Polimorfismo</a></strong>: comportamientos diferentes, asociados a objetos distintos, pueden compartir el mismo nombre, al llamarlos por ese nombre se utilizará el comportamiento correspondiente al objeto que se esté usando. O dicho de otro modo, las referencias y las colecciones de objetos pueden contener objetos de diferentes tipos, y la invocación de un comportamiento en una referencia producirá el comportamiento correcto para el tipo real del objeto referenciado. Cuando esto ocurre en &#8220;tiempo de ejecución&#8221;, esta última característica se llama <em>asignación tardía</em> o <em>asignación dinámica</em>. Algunos lenguajes proporcionan medios más estáticos (en &#8220;tiempo de compilación&#8221;) de polimorfismo, tales como las plantillas y la <a title="Sobrecarga" href="http://es.wikipedia.org/wiki/Sobrecarga">sobrecarga de operadores</a> de C++.</li>
<li><strong><a class="mw-redirect" title="Herencia (programación orientada a objetos)" href="http://es.wikipedia.org/wiki/Herencia_%28programaci%C3%B3n_orientada_a_objetos%29">Herencia</a></strong>: las clases no están aisladas, sino que se relacionan entre sí, formando una jerarquía de clasificación. Los objetos heredan las propiedades y el comportamiento de todas las clases a las que pertenecen. La herencia organiza y facilita el polimorfismo y el encapsulamiento permitiendo a los objetos ser definidos y creados como tipos especializados de objetos preexistentes. Estos pueden compartir (y extender) su comportamiento sin tener que volver a implementarlo. Esto suele hacerse habitualmente agrupando los objetos en <em>clases</em> y estas en <em>árboles</em> o <em>enrejados</em> que reflejan un comportamiento común. Cuando un objeto hereda de más de una clase se dice que hay <em>herencia múltiple</em>.</li>
<li><strong><a class="mw-redirect" title="Recolección de basura (programación orientada a objetos)" href="http://es.wikipedia.org/wiki/Recolecci%C3%B3n_de_basura_%28programaci%C3%B3n_orientada_a_objetos%29">Recolección de basura</a></strong>: la Recolección de basura o Garbage Collection es la técnica por la cual el ambiente de Objetos se encarga de destruir automáticamente, y por tanto desasignar de la memoria, los Objetos que hayan quedado sin ninguna referencia a ellos. Esto significa que el programador no debe preocuparse por la asignación o liberación de memoria, ya que el entorno la asignará al crear un nuevo Objeto y la liberará cuando nadie lo esté usando. En la mayoría de los lenguajes híbridos que se extendieron para soportar el Paradigma de Programación Orientada a Objetos como C++ u Object Pascal, esta característica no existe y la memoria debe desasignarse manualmente.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.micromante.com/blog/2009/11/14/conceptos-y-caracteristicas-poo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
