{"id":784,"date":"2016-08-25T11:19:39","date_gmt":"2016-08-25T16:19:39","guid":{"rendered":"http:\/\/naps.com.mx\/blog\/?p=784"},"modified":"2017-11-16T12:13:44","modified_gmt":"2017-11-16T18:13:44","slug":"paradigma-de-la-programacion-orientada-a-objetos","status":"publish","type":"post","link":"https:\/\/naps.com.mx\/blog\/paradigma-de-la-programacion-orientada-a-objetos\/","title":{"rendered":"Paradigma de la Programaci\u00f3n Orientada a Objetos"},"content":{"rendered":"<p><span id=\"snippet_meta\" class=\"desc\" contenteditable=\"true\">Analicemos c\u00f3mo surgi\u00f3 el paradigma de la Programaci\u00f3n Orientada a Objetos, adem\u00e1s conoceremos los conceptos principales de este tema.<\/span><\/p>\n<div id=\"attachment_787\" style=\"width: 900px\" class=\"wp-caption alignnone\"><a href=\"http:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2016\/08\/paradigma-de-la-programaci\u00f3n.jpeg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-787\" class=\"wp-image-787 size-full\" title=\"paradigma de la programaci\u00f3n\" src=\"http:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2016\/08\/paradigma-de-la-programaci\u00f3n.jpeg\" alt=\"paradigma de la programaci\u00f3n\" width=\"890\" height=\"593\" srcset=\"https:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2016\/08\/paradigma-de-la-programaci\u00f3n.jpeg 890w, https:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2016\/08\/paradigma-de-la-programaci\u00f3n-300x200.jpeg 300w\" sizes=\"auto, (max-width: 890px) 100vw, 890px\" \/><\/a><p id=\"caption-attachment-787\" class=\"wp-caption-text\">Aprende m\u00e1s sobre Paradigma de la programaci\u00f3n Orientada a Objetos<\/p><\/div>\n<p><!--more--><\/p>\n<h2>La necesidad de un paradigma de la Programaci\u00f3n<\/h2>\n<p>Todo sistema es un modelo que trata de simular o emular un aspecto del mundo real. Por ejemplo, en el mundo real las personas compran en un supermercado, donde son atendidos por una cajera que les entrega un comprobante de compra. Un sistema de c\u00f3mputo tratar\u00e1 de emular ese entorno, por lo que habr\u00e1 bases de datos, tablas e interfaces con informaci\u00f3n sobre Clientes, Art\u00edculos, Ventas, Cajeros, Tickets, etc.<\/p>\n<p>Para poder realizar esa emulaci\u00f3n los programadores se adaptan a un determinado <strong>paradigma de programaci\u00f3n<\/strong>. \u00a0Han existido diversos paradigmas, por ejemplo, en un tiempo la programaci\u00f3n era <em><strong>lineal<\/strong><\/em>, e incluso se deb\u00edan especificar los n\u00fameros de l\u00ednea a la hora de programar. El programa comenzaba en la primera l\u00ednea pero no se sab\u00eda en cu\u00e1l finalizaba. Ese problema era conocido como \u00abc\u00f3digo spagueti\u00bb.<\/p>\n<p>Luego pas\u00f3 a ser <em><strong>funcional o procedural<\/strong><\/em>, donde se programaban m\u00f3dulos (por ejemplo, imprimir_ticket), que posteriormente eran invocados por un programa principal.<\/p>\n<p>As\u00ed se lleg\u00f3 a la <em><strong>Programaci\u00f3n Orientada a Objetos,<\/strong><\/em> que cuenta con conceptos y elementos propios que deber\u00e1n ser bien comprendidos antes de emprender la labor de programar bajo este paradigma.<\/p>\n<h2>Lenguajes de programaci\u00f3n orientado a eventos<\/h2>\n<p>Un programa orientado a eventos incorpora un gestor de eventos, es decir una parte del programa encargada de procesar los eventos que ocurran durante la ejecuci\u00f3n del \u00a0programa.<\/p>\n<p>Un <strong>evento<\/strong> es una respuesta que ocurre ante cierto\u00a0determinado cambio, generalmente en nuestro programa (Cardador, 2015).<\/p>\n<p>Por ejemplo, si nuestro programa utilizara un bot\u00f3n, tendr\u00edamos eventos\u00a0como <em>OnClic<\/em> (el usuario dio clic en el bot\u00f3n), <em>OnFocus<\/em> (el bot\u00f3n recibi\u00f3 el enfoque), etc. Deber\u00edamos entonces, codificar qu\u00e9 queremos que se ejecute cuando ocurra cada evento.<\/p>\n<p>Un programa orientado a eventos puede utilizar un paradigma <strong>funcional<\/strong> o <strong>procedural<\/strong>, o uno de <strong>Programaci\u00f3n Orientada a Objetos<\/strong>.<\/p>\n<h2 id=\"objetos\">Paradigma de la Programaci\u00f3n Orientada a Objetos<\/h2>\n<p>El paradigma de la programaci\u00f3n orientada a objetos naci\u00f3 en 1969 de la mano de Kristin Nygaard (Joyanes, 2002). Desde entonces, las tecnolog\u00edas orientadas a objetos han evolucionado mucho.<\/p>\n<p>De acuerdo con Booch (1995), un <strong>objeto<\/strong> es algo que tiene <em>estado<\/em>, <em>comportamiento<\/em> e <em>identidad<\/em>. Por ejemplo, en el mundo real, un auto (objeto), tiene un determinado, color, cantidad de puertas, cantidad de velocidades, capacidad de carga, etc (estado), y es capaz de avanzar, frenar, cambiar de velocidad (comportamiento). Aunque dos autos tengan caracter\u00edsticas muy parecidas, en realidad son diferentes (identidad). En un dise\u00f1o orientado a objetos se crea una abstracci\u00f3n (o modelo simplificado) del auto basado en sus estado y comportamiento. Un objeto conoce c\u00f3mo ejecutar acciones que alteren sus propios datos. Un objeto consta de datos y acciones que se pueden ejecutar.<\/p>\n<p>Un objeto es <strong>transitorio<\/strong>: se pierde cuando el programa termina, a menos que pueda guardar sus datos en un disco o almacenamiento.<\/p>\n<p>Para comunicarnos con un objeto se utilizan <strong>mensajes<\/strong>. Un mensaje incluye un identificador que contiene la acci\u00f3n que ha de ejecutar el objeto junto con datos que el objeto necesita para realizar el trabajo.<\/p>\n<p>Un objeto tiene una <strong>interfaz<\/strong>, un conjunto de operaciones visibles que simplifican el uso del objeto. Un objeto del mundo real tiene unos cuantos botones para que el usuario opere a trav\u00e9s de ellos. El usuario no puede ni necesita abrir el aparato para poder operar sobre el. De igual forma, una interfaz impide que el usuario tenga que conocer todos los detalles de implementaci\u00f3n del objeto, este concepto se conoce como <strong>encapsulamiento<\/strong>.<\/p>\n<h3>En conclusi\u00f3n<\/h3>\n<p>Un objeto (POO) trata de emular una entidad del mundo real, sea \u00e9sta una entidad f\u00edsica, conceptual o de software. Tiene estado (un conjunto de datos), comportamiento (acciones que se pueden ejecutar) \u00a0e identidad.<\/p>\n<h3>Referencias<\/h3>\n<ol>\n<li>Booch (1995) <strong>An\u00e1lisis y dise\u00f1o orientado a objetos con aplicaciones.<\/strong><\/li>\n<li>Cardador (2015). <strong><a href=\"https:\/\/books.google.com\/books?id=hk4bCAAAQBAJ&amp;printsec=frontcover&amp;source=gbs_ge_summary_r&amp;cad=0#v=onepage&amp;q&amp;f=false\" target=\"_blank\" class=\"broken_link\">Programaci\u00f3n con lenguajes de gui\u00f3n en p\u00e1ginas web<\/a><\/strong>. IC Editorial.<\/li>\n<li>Joyanes (2002). <strong>Programaci\u00f3n en Java2<\/strong>. McGraw Hill.<\/li>\n<li><\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>Analicemos c\u00f3mo surgi\u00f3 el paradigma de la Programaci\u00f3n Orientada a Objetos, adem\u00e1s conoceremos los conceptos principales de este tema.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"amp_status":"","footnotes":""},"categories":[167],"tags":[170,169,168],"class_list":["post-784","post","type-post","status-publish","format-standard","hentry","category-programacion-orientada-a-objetos","tag-conceptos-de-poo","tag-paradigma-de-la-programacion","tag-poo"],"_links":{"self":[{"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/posts\/784","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/comments?post=784"}],"version-history":[{"count":8,"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/posts\/784\/revisions"}],"predecessor-version":[{"id":1142,"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/posts\/784\/revisions\/1142"}],"wp:attachment":[{"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/media?parent=784"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/categories?post=784"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/tags?post=784"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}