{"id":778,"date":"2011-04-15T13:50:28","date_gmt":"2011-04-15T12:50:28","guid":{"rendered":"http:\/\/blog.walii.es\/?p=778"},"modified":"2011-04-15T13:50:28","modified_gmt":"2011-04-15T12:50:28","slug":"poo-inicio","status":"publish","type":"post","link":"https:\/\/blog.walii.es\/?p=778","title":{"rendered":"POO inicio"},"content":{"rendered":"<p>Uno de los problemas basicos de la Programaci\u00f3n orientada a objetos es entender desde el principio lo que estamos haciendo y una de las formas de hacerlo es traer al mundo real la forma de programar y as\u00ed comenzar con una base, por eso de decidido pegar este texto que a mi parece ilustra muy bien lo que se hace con POO.<\/p>\n<h2>Abstracci\u00f3n:<\/h2>\n<p>Cada vez que pronunciamos una palabra, realmente lo que hacemos es asociar ese sonido (o ese conjunto de garabatos al escribir) con una serie de cosas. Decimos que una ave\u00a0<strong>es<\/strong> tal cosa, que una silla\u00a0<strong>es<\/strong> tal otra, etc.<\/p>\n<p>Cuando vamos a aplicar la\u00a0<a href=\"http:\/\/www.cristalab.com\/programacion-orientada-objetos\/\">POO<\/a>, lo primero que debemos hacer es cumplir con una vieja m\u00e1xima de guerra:\u00a0<em>Divide y Vencer\u00e1s<\/em>. Es decir, lo que hacemos es seccionar nuestro c\u00f3digo en grupos de c\u00f3digo m\u00e1s peque\u00f1o que, al unirlos, hacen el trabajo. Un buen ejemplo de abstracci\u00f3n es el cuerpo humano, aunque el cuerpo es una unidad, est\u00e1 dividido en lo que conocemos por\u00a0<em>sistemas<\/em> (el sistema respiratorio, el sistema linf\u00e1tico, cardiovascular, etc., etc.). Estos sistemas, a su vez est\u00e1n compuestos por otros m\u00e1s peque\u00f1os: los \u00f3rganos, y as\u00ed sucesivamente. La abstracci\u00f3n nos permite dividir nuestro programa en distintos objetos que se agrupan para formar cosas m\u00e1s complejas.<\/p>\n<p>Pero \u00bfqu\u00e9 demonios es realmente la abstracci\u00f3n? B\u00e1sicamente es la capacidad de separar los elementos (al menos mentalmente) para poder verlos de forma singular. Como cuando describimos el cuerpo humano y decimos cabeza, brazo(s), pierna(s), etc.<\/p>\n<h2>Encapsulaci\u00f3n:<\/h2>\n<p>Tambi\u00e9n conocida como\u00a0<strong>ocultamiento<\/strong>. Cuando me acuesto a ver televisi\u00f3n no me preocupo del modo como \u00e9ste funciona, o lo que hace para cambiar de canal o aumentar el volumen. A menos que seas experto en electr\u00f3nica o t\u00e9cnico en televisores, te pasar\u00e1 lo mismo: no lo sabes y no te importa; s\u00f3lo sabes que al presionar un bot\u00f3n ocurre la magia.<\/p>\n<p>La encapsulaci\u00f3n se encarga de mantener ocultos los procesos internos que necesita para hacer lo que sea que haga, d\u00e1ndole al programador acceso\u00a0<strong>s\u00f3lo a lo que necesita<\/strong>. Esto da dos ventajas iniciales: Lo que hace el usuario puede ser controlado internamente (incluso sus errores), evitando que todo colapse por una intervenci\u00f3n\u00a0<em>indeseada<\/em> (t\u00fa no quieres que tu mam\u00e1, que no tiene ni idea de electr\u00f3nica, abra tu televisor y empiece a jugar con los circuitos para cambiar los canales\u00a0<em>manualmente<\/em> \u00bfverdad?). La segunda ventaja es que, al hacer que la mayor parte del c\u00f3digo est\u00e9\u00a0<em>oculto<\/em>, puedes hacer cambios y\/o mejoras sin que eso afecte el modo como los usuarios van a utilizar tu c\u00f3digo. S\u00f3lo tienes que mantener igual la forma de acceder a \u00e9l (en el caso del control de la tele, que los botones sigan siendo los mismos y que el bot\u00f3n de \u201capagado\u201d no cambie el volumen). Por cierto, estas\u00a0<em>puertas de acceso<\/em> que das a los usuarios son lo que se conoce como\u00a0<em>interfaz<\/em>.<\/p>\n<h2>Herencia:<\/h2>\n<p>Uno de los elementos (a mi modo de ver) m\u00e1s interesantes de la\u00a0<a href=\"http:\/\/www.cristalab.com\/programacion-orientada-objetos\/\">P.O.O.<\/a> La herencia es la capacidad que tiene una clase de\u00a0<em>derivar<\/em> las propiedades y m\u00e9todos de otra (suena a chino \u00bfno? Calma, lo veremos luego con paciencia \ud83d\ude09 ). Tratemos de explicarlo con un ejemplo:<\/p>\n<p>Decimos que\u00a0<em>una gallina\u00a0<strong>es un<\/strong> ave<\/em>; esto quiere decir que las gallinas tienen caracter\u00edsticas comunes con otras aves (pico, plumas, etc.), es decir que la gallina\u00a0<strong>hereda<\/strong> las caracter\u00edsticas comunes de todas las aves. Pero adem\u00e1s, resulta que\u00a0<em>un ave\u00a0<strong>es un<\/strong> animal<\/em>, lo que significa que tambi\u00e9n comparte caracter\u00edsticas comunes al caballo, el perro, el hombre (seeee, somos animales) y cualquier otra cosa que pueda ser clasificada como\u00a0<em>animal<\/em>.<\/p>\n<p>La herencia nos permite, entre otras cosas, evitar tener que escribir el mismo c\u00f3digo una y otra vez, puesto que al definir que una categor\u00eda (que en programaci\u00f3n llamaremos\u00a0<em>clase<\/em>) pertenece a otra, autom\u00e1ticamente estamos atribuy\u00e9ndoles las caracter\u00edsticas generales de la primera, sin tener que definirlas de nuevo.<\/p>\n<p>Saludos.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Uno de los problemas basicos de la Programaci\u00f3n orientada a objetos es entender desde el principio lo que estamos haciendo y una de las formas de hacerlo es traer al mundo real la forma de programar y as\u00ed comenzar con una base, por eso de decidido pegar este texto que a mi parece ilustra muy &hellip;<br \/><a href=\"https:\/\/blog.walii.es\/?p=778\" class=\"more-link pen_button pen_element_default pen_icon_arrow_double\">Seguir leyendo <span class=\"screen-reader-text\">POO inicio<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[68,100],"tags":[],"_links":{"self":[{"href":"https:\/\/blog.walii.es\/index.php?rest_route=\/wp\/v2\/posts\/778"}],"collection":[{"href":"https:\/\/blog.walii.es\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.walii.es\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.walii.es\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.walii.es\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=778"}],"version-history":[{"count":2,"href":"https:\/\/blog.walii.es\/index.php?rest_route=\/wp\/v2\/posts\/778\/revisions"}],"predecessor-version":[{"id":780,"href":"https:\/\/blog.walii.es\/index.php?rest_route=\/wp\/v2\/posts\/778\/revisions\/780"}],"wp:attachment":[{"href":"https:\/\/blog.walii.es\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=778"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.walii.es\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=778"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.walii.es\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=778"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}