<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2573493147347573789</id><updated>2024-09-24T14:13:10.844-07:00</updated><category term="Diagrama de Clases"/><category term="Programacion"/><category term="UCAB"/><category term="UML"/><title type='text'>ChirixWorld</title><subtitle type='html'>Un Mundo de Fantasía, Arte y Tecnología.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://chirixworld.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2573493147347573789/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://chirixworld.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>ChirixWorld</name><uri>http://www.blogger.com/profile/00986662016076566479</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>5</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2573493147347573789.post-6435242199299118520</id><published>2011-06-04T09:31:00.000-07:00</published><updated>2011-07-01T14:55:07.129-07:00</updated><title type='text'>Patrón de Diseño Factory (Fábrica9</title><content type='html'>&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: sans-serif; font-size: 13px; line-height: 19px;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;line-height: 1.5em; margin-bottom: 0.5em; margin-left: 0px; margin-right: 0px; margin-top: 0.4em;&quot;&gt;En&amp;nbsp;diseño de software, el&amp;nbsp;patrón de diseño&amp;nbsp;&lt;b&gt;Factory Method&lt;/b&gt;&amp;nbsp;consiste en utilizar una clase constructora (al estilo del Abstract Factory) abstracta con unos cuantos métodos definidos y otro(s) abstracto(s): el dedicado a la construcción de objetos de un subtipo de un tipo determinado. Es una simplificación del&amp;nbsp;&lt;a href=&quot;http://es.wikipedia.org/wiki/Abstract_Factory_(patr%C3%B3n_de_dise%C3%B1o)&quot; style=&quot;background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; text-decoration: none;&quot; title=&quot;Abstract Factory (patrón de diseño)&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: black;&quot;&gt;Abstract Factory&lt;/span&gt;&lt;/a&gt;, en la que la&amp;nbsp;&lt;a class=&quot;mw-redirect&quot; href=&quot;http://es.wikipedia.org/wiki/Clase_abstracta&quot; style=&quot;background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; text-decoration: none;&quot; title=&quot;Clase abstracta&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: black;&quot;&gt;clase abstracta&lt;/span&gt;&lt;/a&gt;&amp;nbsp;tiene métodos concretos que usan algunos de los abstractos; según usemos una u otra hija de esta clase abstracta, tendremos uno u otro comportamiento.&lt;/div&gt;&lt;h2 style=&quot;background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; color: black; font-size: 19px; font-weight: normal; margin-bottom: 0.6em; margin-left: 0px; margin-right: 0px; margin-top: 0px; overflow-x: hidden; overflow-y: hidden; padding-bottom: 0.17em; padding-top: 0.5em; width: auto;&quot;&gt;&lt;span class=&quot;editsection&quot; style=&quot;float: right; font-size: 13px; margin-left: 5px;&quot;&gt;[&lt;a href=&quot;http://es.wikipedia.org/w/index.php?title=Factory_Method_(patr%C3%B3n_de_dise%C3%B1o)&amp;amp;action=edit&amp;amp;section=1&quot; style=&quot;background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #0645ad; text-decoration: none;&quot; title=&quot;Editar sección: Estructura&quot;&gt;editar&lt;/a&gt;]&lt;/span&gt;&lt;span class=&quot;mw-headline&quot; id=&quot;Estructura&quot;&gt;Estructura&lt;/span&gt;&lt;/h2&gt;&lt;div style=&quot;line-height: 1.5em; margin-bottom: 0.5em; margin-left: 0px; margin-right: 0px; margin-top: 0.4em;&quot;&gt;Las clases principales en este patrón son el&amp;nbsp;&lt;i&gt;creador&lt;/i&gt;&amp;nbsp;y el&amp;nbsp;&lt;i&gt;producto&lt;/i&gt;. El creador necesita crear instancias de productos, pero el tipo concreto de producto no debe ser forzado en las subclases del creador, porque entonces las posibles subclases del creador deben poder especificar subclases del producto para utilizar.&lt;/div&gt;&lt;div style=&quot;line-height: 1.5em; margin-bottom: 0.5em; margin-left: 0px; margin-right: 0px; margin-top: 0.4em;&quot;&gt;&lt;a class=&quot;image&quot; href=&quot;http://es.wikipedia.org/wiki/Archivo:Factory_Method.png&quot; style=&quot;background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #0645ad; text-decoration: none;&quot;&gt;&lt;img alt=&quot;Factory Method.png&quot; height=&quot;267&quot; src=&quot;http://upload.wikimedia.org/wikipedia/commons/7/73/Factory_Method.png&quot; style=&quot;border-bottom-style: none; border-color: initial; border-left-style: none; border-right-style: none; border-top-style: none; border-width: initial; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; vertical-align: middle;&quot; width=&quot;635&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5em; margin-bottom: 0.5em; margin-left: 0px; margin-right: 0px; margin-top: 0.4em;&quot;&gt;La solución para esto es hacer un método abstracto (el método de la fábrica) que se define en el creador. Este método abstracto se define para que devuelva un producto. Las subclases del creador pueden sobrescribir este método para devolver subclases apropiadas del producto...&lt;/div&gt;&lt;h2 style=&quot;background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; color: black; font-size: 19px; font-weight: normal; margin-bottom: 0.6em; margin-left: 0px; margin-right: 0px; margin-top: 0px; overflow-x: hidden; overflow-y: hidden; padding-bottom: 0.17em; padding-top: 0.5em; width: auto;&quot;&gt;&lt;span class=&quot;editsection&quot; style=&quot;float: right; font-size: 13px; margin-left: 5px;&quot;&gt;[&lt;a href=&quot;http://es.wikipedia.org/w/index.php?title=Factory_Method_(patr%C3%B3n_de_dise%C3%B1o)&amp;amp;action=edit&amp;amp;section=2&quot; style=&quot;background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #0645ad; text-decoration: none;&quot; title=&quot;Editar sección: Ejemplo de código (en Java)&quot;&gt;editar&lt;/a&gt;]&lt;/span&gt;&lt;span class=&quot;mw-headline&quot; id=&quot;Ejemplo_de_c.C3.B3digo_.28en_Java.29&quot;&gt;Ejemplo de código (en Java)&lt;/span&gt;&lt;/h2&gt;&lt;div class=&quot;mw-geshi&quot; dir=&quot;ltr&quot; style=&quot;background-color: #f9f9f9; border-bottom-color: rgb(47, 111, 171); border-bottom-style: dashed; border-bottom-width: 1px; border-left-color: rgb(47, 111, 171); border-left-style: dashed; border-left-width: 1px; border-right-color: rgb(47, 111, 171); border-right-style: dashed; border-right-width: 1px; border-top-color: rgb(47, 111, 171); border-top-style: dashed; border-top-width: 1px; color: black; line-height: 1.1em; padding-bottom: 1em; padding-left: 1em; padding-right: 1em; padding-top: 1em; text-align: left;&quot;&gt;&lt;div class=&quot;java source-java&quot; style=&quot;font-family: monospace; line-height: normal;&quot;&gt;&lt;pre class=&quot;de1&quot; style=&quot;background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: white; border-bottom-style: none; border-bottom-width: 0px; border-left-color: white; border-left-style: none; border-left-width: 0px; border-right-color: white; border-right-style: none; border-right-width: 0px; border-top-color: white; border-top-style: none; border-top-width: 0px; color: black; font-family: monospace, &#39;Courier New&#39;; font-size: 10pt; font: normal normal normal 1em/1.2em monospace; line-height: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: top;&quot;&gt;&lt;span class=&quot;co1&quot; style=&quot;color: #666666; font-style: italic;&quot;&gt;// Definimos la clase abstracta constructora&lt;/span&gt;
&lt;span class=&quot;kw1&quot; style=&quot;color: black; font-weight: bold;&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw1&quot; style=&quot;color: black; font-weight: bold;&quot;&gt;abstract&lt;/span&gt; &lt;span class=&quot;kw1&quot; style=&quot;color: black; font-weight: bold;&quot;&gt;class&lt;/span&gt; Creator&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;co1&quot; style=&quot;color: #666666; font-style: italic;&quot;&gt;// Operación que realiza &lt;/span&gt;
    &lt;span class=&quot;kw1&quot; style=&quot;color: black; font-weight: bold;&quot;&gt;public&lt;/span&gt; Product  anOperation&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;{&lt;/span&gt;
 
        &lt;span class=&quot;kw1&quot; style=&quot;color: black; font-weight: bold;&quot;&gt;return&lt;/span&gt; factoryMethod&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;sy0&quot; style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;}&lt;/span&gt;
 
    &lt;span class=&quot;co1&quot; style=&quot;color: #666666; font-style: italic;&quot;&gt;// Definimos método abstracto&lt;/span&gt;
    &lt;span class=&quot;kw1&quot; style=&quot;color: black; font-weight: bold;&quot;&gt;protected&lt;/span&gt; &lt;span class=&quot;kw1&quot; style=&quot;color: black; font-weight: bold;&quot;&gt;abstract&lt;/span&gt; Product factoryMethod&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;sy0&quot; style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5em; margin-bottom: 0.5em; margin-left: 0px; margin-right: 0px; margin-top: 0.4em;&quot;&gt;Ahora definimos el creador concreto.&lt;/div&gt;&lt;div class=&quot;mw-geshi&quot; dir=&quot;ltr&quot; style=&quot;background-color: #f9f9f9; border-bottom-color: rgb(47, 111, 171); border-bottom-style: dashed; border-bottom-width: 1px; border-left-color: rgb(47, 111, 171); border-left-style: dashed; border-left-width: 1px; border-right-color: rgb(47, 111, 171); border-right-style: dashed; border-right-width: 1px; border-top-color: rgb(47, 111, 171); border-top-style: dashed; border-top-width: 1px; color: black; line-height: 1.1em; padding-bottom: 1em; padding-left: 1em; padding-right: 1em; padding-top: 1em; text-align: left;&quot;&gt;&lt;div class=&quot;java source-java&quot; style=&quot;font-family: monospace; line-height: normal;&quot;&gt;&lt;pre class=&quot;de1&quot; style=&quot;background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: white; border-bottom-style: none; border-bottom-width: 0px; border-left-color: white; border-left-style: none; border-left-width: 0px; border-right-color: white; border-right-style: none; border-right-width: 0px; border-top-color: white; border-top-style: none; border-top-width: 0px; color: black; font-family: monospace, &#39;Courier New&#39;; font-size: 10pt; font: normal normal normal 1em/1.2em monospace; line-height: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: top;&quot;&gt;&lt;span class=&quot;kw1&quot; style=&quot;color: black; font-weight: bold;&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw1&quot; style=&quot;color: black; font-weight: bold;&quot;&gt;class&lt;/span&gt; ConcreteCreator &lt;span class=&quot;kw1&quot; style=&quot;color: black; font-weight: bold;&quot;&gt;extends&lt;/span&gt; Creator&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;kw1&quot; style=&quot;color: black; font-weight: bold;&quot;&gt;protected&lt;/span&gt; Product factoryMethod&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;kw1&quot; style=&quot;color: black; font-weight: bold;&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw1&quot; style=&quot;color: black; font-weight: bold;&quot;&gt;new&lt;/span&gt; ConcreteProduct&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;sy0&quot; style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5em; margin-bottom: 0.5em; margin-left: 0px; margin-right: 0px; margin-top: 0.4em;&quot;&gt;Y definimos el producto y su implementación concreta.&lt;/div&gt;&lt;div class=&quot;mw-geshi&quot; dir=&quot;ltr&quot; style=&quot;background-color: #f9f9f9; border-bottom-color: rgb(47, 111, 171); border-bottom-style: dashed; border-bottom-width: 1px; border-left-color: rgb(47, 111, 171); border-left-style: dashed; border-left-width: 1px; border-right-color: rgb(47, 111, 171); border-right-style: dashed; border-right-width: 1px; border-top-color: rgb(47, 111, 171); border-top-style: dashed; border-top-width: 1px; color: black; line-height: 1.1em; padding-bottom: 1em; padding-left: 1em; padding-right: 1em; padding-top: 1em; text-align: left;&quot;&gt;&lt;div class=&quot;java source-java&quot; style=&quot;font-family: monospace; line-height: normal;&quot;&gt;&lt;pre class=&quot;de1&quot; style=&quot;background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: white; border-bottom-style: none; border-bottom-width: 0px; border-left-color: white; border-left-style: none; border-left-width: 0px; border-right-color: white; border-right-style: none; border-right-width: 0px; border-top-color: white; border-top-style: none; border-top-width: 0px; color: black; font-family: monospace, &#39;Courier New&#39;; font-size: 10pt; font: normal normal normal 1em/1.2em monospace; line-height: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: top;&quot;&gt;&lt;span class=&quot;kw1&quot; style=&quot;color: black; font-weight: bold;&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw1&quot; style=&quot;color: black; font-weight: bold;&quot;&gt;interface&lt;/span&gt; Product&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;kw1&quot; style=&quot;color: black; font-weight: bold;&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw4&quot; style=&quot;color: #000066; font-weight: bold;&quot;&gt;void&lt;/span&gt; operacion&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;sy0&quot; style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;}&lt;/span&gt;
 
&lt;span class=&quot;kw1&quot; style=&quot;color: black; font-weight: bold;&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw1&quot; style=&quot;color: black; font-weight: bold;&quot;&gt;class&lt;/span&gt; ConcreteProduct &lt;span class=&quot;kw1&quot; style=&quot;color: black; font-weight: bold;&quot;&gt;implements&lt;/span&gt; Product&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;kw1&quot; style=&quot;color: black; font-weight: bold;&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw4&quot; style=&quot;color: #000066; font-weight: bold;&quot;&gt;void&lt;/span&gt; operacion&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;kw3&quot; style=&quot;color: #003399;&quot;&gt;System&lt;/span&gt;.&lt;span class=&quot;me1&quot; style=&quot;color: #006633;&quot;&gt;out&lt;/span&gt;.&lt;span class=&quot;me1&quot; style=&quot;color: #006633;&quot;&gt;println&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;st0&quot; style=&quot;color: blue;&quot;&gt;&quot;Una operación de este producto&quot;&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;sy0&quot; style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5em; margin-bottom: 0.5em; margin-left: 0px; margin-right: 0px; margin-top: 0.4em;&quot;&gt;Y un ejemplo de uso&amp;nbsp;:&lt;/div&gt;&lt;div class=&quot;mw-geshi&quot; dir=&quot;ltr&quot; style=&quot;background-color: #f9f9f9; border-bottom-color: rgb(47, 111, 171); border-bottom-style: dashed; border-bottom-width: 1px; border-left-color: rgb(47, 111, 171); border-left-style: dashed; border-left-width: 1px; border-right-color: rgb(47, 111, 171); border-right-style: dashed; border-right-width: 1px; border-top-color: rgb(47, 111, 171); border-top-style: dashed; border-top-width: 1px; color: black; line-height: 1.1em; padding-bottom: 1em; padding-left: 1em; padding-right: 1em; padding-top: 1em; text-align: left;&quot;&gt;&lt;div class=&quot;java source-java&quot; style=&quot;font-family: monospace; line-height: normal;&quot;&gt;&lt;pre class=&quot;de1&quot; style=&quot;background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: white; border-bottom-style: none; border-bottom-width: 0px; border-left-color: white; border-left-style: none; border-left-width: 0px; border-right-color: white; border-right-style: none; border-right-width: 0px; border-top-color: white; border-top-style: none; border-top-width: 0px; color: black; font-family: monospace, &#39;Courier New&#39;; font-size: 10pt; font: normal normal normal 1em/1.2em monospace; line-height: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: top;&quot;&gt;&lt;span class=&quot;kw1&quot; style=&quot;color: black; font-weight: bold;&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw1&quot; style=&quot;color: black; font-weight: bold;&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;kw4&quot; style=&quot;color: #000066; font-weight: bold;&quot;&gt;void&lt;/span&gt; main&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kw3&quot; style=&quot;color: #003399;&quot;&gt;String&lt;/span&gt; args&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;{&lt;/span&gt;
    Creator aCreator&lt;span class=&quot;sy0&quot; style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
    aCreator &lt;span class=&quot;sy0&quot; style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw1&quot; style=&quot;color: black; font-weight: bold;&quot;&gt;new&lt;/span&gt; ConcreteCreator&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;sy0&quot; style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
    Product producto &lt;span class=&quot;sy0&quot; style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; aCreator.&lt;span class=&quot;me1&quot; style=&quot;color: #006633;&quot;&gt;anOperation&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;sy0&quot; style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
    producto.&lt;span class=&quot;me1&quot; style=&quot;color: #006633;&quot;&gt;operacion&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;sy0&quot; style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chirixworld.blogspot.com/feeds/6435242199299118520/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://chirixworld.blogspot.com/2011/06/patron-de-diseno-factory-fabrica9.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2573493147347573789/posts/default/6435242199299118520'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2573493147347573789/posts/default/6435242199299118520'/><link rel='alternate' type='text/html' href='http://chirixworld.blogspot.com/2011/06/patron-de-diseno-factory-fabrica9.html' title='Patrón de Diseño Factory (Fábrica9'/><author><name>ChirixWorld</name><uri>http://www.blogger.com/profile/00986662016076566479</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2573493147347573789.post-1907592195984637488</id><published>2011-05-27T20:37:00.000-07:00</published><updated>2011-05-27T21:51:44.467-07:00</updated><title type='text'>Paradigmas de la Programación.</title><content type='html'>&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;span class=&quot;apple-style-span&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;font-family: Helvetica, sans-serif; line-height: 115%;&quot;&gt;Los &lt;b&gt;“Paradigmas de programación”&lt;/b&gt; son la forma, la visión que determinan los métodos y las herramientas que un programador usara en la construcción de un software. Mayormente los lenguajes de programación están basados en uno o más paradigmas; por ejemplo el paradigma procedimental es seguido por la&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif; line-height: 13px;&quot;&gt;mayoría de los lenguajes actuales,&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif; line-height: 13px;&quot;&gt;tales como JAVA, Pascal y C++. También podemos encontrar lenguajes&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif; line-height: 13px;&quot;&gt;con la influencia de dos paradigmas, por ejemplo C++, que tiene su origen procedimental y al cual se le ha agregado el&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif; line-height: 13px;&quot;&gt;paradigma orientado a objetos.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; font-family: Helvetica, sans-serif; line-height: 13px;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; font-family: Helvetica, sans-serif; line-height: 13px;&quot;&gt;En este artículo les hablare un poco sobre los siguientes paradigmas:&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;apple-style-span&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c; font-family: Helvetica, sans-serif; line-height: 115%;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; font-family: Helvetica, sans-serif; line-height: 13px;&quot;&gt;Funcional.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; font-family: Helvetica, sans-serif; line-height: 13px;&quot;&gt;Estructural.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;Orientada a Objetos.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; font-family: Helvetica, sans-serif; line-height: 13px;&quot;&gt;Orientada a Eventos.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; font-family: Helvetica, sans-serif; line-height: 13px;&quot;&gt;Orientada a Aspectos.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;&lt;b&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; Programación Funcional.&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;Los orígenes de la programación&amp;nbsp; funcional pueden rastrearse al&amp;nbsp;matemático Alonzo Church, que trabajaba en la Universidad de&amp;nbsp;Princeton, y, al igual que otros matemáticos de allí, estaba interesado&amp;nbsp;en la matemática abstracta, particularmente en el poder computacional&amp;nbsp;de ciertas máquinas abstractas. Las&amp;nbsp; preguntas que se hacía eran por&amp;nbsp;ejemplo: si dispusiésemos de&amp;nbsp; máquinas de un ilimitado poder de&amp;nbsp;cómputo, ¿qué tipos de problemas se podrían solucionar?, o ¿se&amp;nbsp;pueden resolver todos los problemas?&amp;nbsp;Para contestar este tipo de preguntas, Church desarrolló un&amp;nbsp;lenguaje abstracto, denominado Cálculo Lambda, que el cual sólo&amp;nbsp;realizaba evaluación de expresiones usando funciones como&amp;nbsp;mecanismo de cómputo. Este lenguaje abstracto no tenía en cuenta&amp;nbsp;limitaciones concretas de implementación de ningún tipo.&amp;nbsp;Al mismo tiempo que Church, otro matemático, Alan Turing,&amp;nbsp;desarrolló una máquina abstracta para intentar resolver el mismo&amp;nbsp;tipo de problemas planteados por Church. Después se demostró que&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;line-height: 13px;&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;ambos enfoques son equivalentes.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;line-height: 13px;&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;&lt;span lang=&quot;ES-VE&quot;&gt;Las primeras computadoras digitales se construyeron siguiendo un&amp;nbsp;&lt;/span&gt;esquema de arquitectura denominado de Von Neumann, que es&amp;nbsp;básicamente una implementación de la máquina de Turing a una&amp;nbsp;máquina real. Esta máquina forzó de alguna manera el lenguaje en el&amp;nbsp;cual se escriben sus programas, justamente el paradigma&amp;nbsp;procedimental, el cual, como&amp;nbsp; menciona Backus en un muy famoso&amp;nbsp;artículo que escribió al recibir el premio Turing en 1978 (Backus 1978),&amp;nbsp;tiene tantísimos defectos, que muchos programadores padecemos aun&amp;nbsp;hoy.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;line-height: 13px;&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;&lt;span lang=&quot;ES-VE&quot;&gt;La programación funcional se&amp;nbsp; aparta de esta concepción de&amp;nbsp;&lt;/span&gt;máquina, y trata de ajustarse más a la forma de resolver el problema,&amp;nbsp;que a las construcciones del lenguaje necesarias para cumplir con la&amp;nbsp;ejecución en esta máquina. Por ejemplo, un condicionamiento de la&amp;nbsp;máquina de Von-Neumann es la memoria, por lo cual los programas&amp;nbsp;procedimentales poseen&amp;nbsp; variables. Sin embargo en la programación&amp;nbsp;funcional pura, las variables no son necesarias, ya que no se considera&amp;nbsp;a la memoria necesaria, pudiéndose entender un programa como una&amp;nbsp;evaluación continua de&amp;nbsp; funciones sobre funciones. Es decir, la&amp;nbsp;programación funcional posee un estilo de computación que sigue la&amp;nbsp;evaluación de funciones matemáticas y evita los estados intermedios y&amp;nbsp;la modificación de datos durante la misma.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;line-height: 13px;&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;&lt;span lang=&quot;ES-VE&quot;&gt;Hoy en día existen diversos lenguajes funcionales. Se podría&amp;nbsp;&lt;/span&gt;considerar como uno de los primeros lenguajes funcionales al LISP, que&amp;nbsp;actualmente sigue en uso, sobre todo en áreas de la inteligencia&amp;nbsp;artificial. También un pionero de este paradigma es APL desarrollado en&amp;nbsp;los años 60 (Iverson 1962). El linaje funcional se enriqueció en los años&amp;nbsp;70, con el aporte de Robin Milner de la Universidad de Edimburgo al&amp;nbsp;crear el lenguaje ML. Éste se subdividió posteriormente en varios&amp;nbsp;dialectos tales como Objective Caml y Standard ML. A fines de los años&amp;nbsp;80, a partir de un comité, se creó el lenguaje Haskell, en un intento de&amp;nbsp;reunir varias ideas dispersas en los diferentes lenguajes funcionales (un&amp;nbsp;intento de estandarizar el paradigma). En el año 2008 Microsoft Research incluyó&lt;span lang=&quot;ES-VE&quot;&gt;&amp;nbsp;un nuevo lenguaje (funcional), denominado F#, a su plataforma&amp;nbsp;&lt;/span&gt;.NET.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;&lt;i&gt;¿Qué es y de qué trata este paradigma?&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;Intentaré explicar la utilidad y potencia de la&amp;nbsp;programación funcional, por medio de pequeños ejemplos, para&amp;nbsp;comprender más rápidamente esta filosofía de programación.&amp;nbsp;Dado el nombre del paradigma, sabemos básicamente que lo&amp;nbsp;central en el mismo es la idea de función, que podríamos decir es&amp;nbsp;análoga a lo que conocemos de funciones de la matemática. Por&amp;nbsp;ejemplo, podemos escribir en el lenguaje funcional Haskell:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;Factorial :: int -&amp;gt; int&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;factorial 0 = 1&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; font-family: Helvetica, sans-serif; line-height: 13px;&quot;&gt;factorial n = n * factorial (n-1)&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;line-height: 13px;&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;line-height: 13px;&quot;&gt;&lt;span lang=&quot;ES-VE&quot;&gt;Es decir, la última es una función sencilla, parecida a la que conocemos&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif; line-height: 13px;&quot;&gt;de las matemáticas de la secundaria, que permite calcular el factorial de&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif; line-height: 13px;&quot;&gt;un número entero&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; font-family: Helvetica, sans-serif; line-height: 13px;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif; line-height: 13px;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif; line-height: 13px;&quot;&gt;Comparemos esa línea de código de Haskell con la siguiente en un&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif; line-height: 13px;&quot;&gt;lenguaje como C#:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;unsigned factorial (unsigned n)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;int product = 1;&amp;nbsp;&amp;nbsp;&amp;nbsp; // valor inicial&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;while (n &amp;gt; 1)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;line-height: 13px;&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;line-height: 13px;&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; product *= n--;&amp;nbsp;&amp;nbsp; // acumulador&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; font-family: Helvetica, sans-serif; line-height: 13px;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; font-family: Helvetica, sans-serif; line-height: 13px;&quot;&gt;return product;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // resultado&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;line-height: 13px;&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;line-height: 13px;&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;line-height: 13px;&quot;&gt;&lt;span lang=&quot;ES-VE&quot;&gt;Este ejemplo es muy sencillo y los dos fragmentos de código son&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif; line-height: 13px;&quot;&gt;muy parecidos. Sin embargo, la&amp;nbsp; definición de Haskell es mucho más&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif; line-height: 13px;&quot;&gt;cercana a la matemática:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;line-height: 13px;&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;line-height: 13px;&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;0! = 1&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;line-height: 13px;&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;n! = n * (n - 1)!&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;line-height: 13px;&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;line-height: 13px;&quot;&gt;&lt;span lang=&quot;ES-VE&quot;&gt;La pregunta que nos hacemos ahora, es si podemos construir&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif; line-height: 13px;&quot;&gt;programas complejos usando simplemente funciones. Esta pregunta se&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif; line-height: 13px;&quot;&gt;puede contestar fácilmente si describimos las características principales&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif; line-height: 13px;&quot;&gt;de este tipo de lenguajes. A modo de ejemplo de introducción, veamos&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif; line-height: 13px;&quot;&gt;como se escribiría el programa de ordenamiento QuickSort en Haskell:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;line-height: 13px;&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;line-height: 13px;&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;quicksort [ ]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = [ ]&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;line-height: 13px;&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;quicksort ( x : xs ) = ( quicksort &amp;nbsp;[ y | y &amp;lt;- xs, y &amp;lt;= x &amp;nbsp;] )&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;line-height: 13px;&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;line-height: 13px;&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;++ [ x ] ++&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;line-height: 13px;&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;( quicksort [ &amp;nbsp;z | z &amp;lt;- xs, z&amp;nbsp; &amp;gt; x &amp;nbsp;] )&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;line-height: 13px;&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;line-height: 13px;&quot;&gt;&lt;span lang=&quot;ES-VE&quot;&gt;En este caso, conseguimos un programa muy sencillo y corto, que&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif; line-height: 13px;&quot;&gt;basa su potencia en la habilidad de&amp;nbsp; Haskell de manipular listas ([ ]) y&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif; line-height: 13px;&quot;&gt;especificar funciones recursivas. Quicksort se define recursivamente, a&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif; line-height: 13px;&quot;&gt;partir de la misma definición matemática del algoritmo. Este algoritmo&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif; line-height: 13px;&quot;&gt;utiliza una estrategia de divide y conquista (divide and conquer), la cual&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif; line-height: 13px;&quot;&gt;divide a una lista en dos sublistas, la primera con elementos menores o&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif; line-height: 13px;&quot;&gt;iguales que uno dado, denominado&amp;nbsp; pivot, y la segunda con elementos&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif; line-height: 13px;&quot;&gt;mayores. En la primera línea del cuerpo (línea 2), se define la primera&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif; line-height: 13px;&quot;&gt;sublista, en la segunda línea el&amp;nbsp; pivot, y la tercera línea la tercera&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif; line-height: 13px;&quot;&gt;sublista. El operador predefinido ++ concatena dos listas. Cada llamada&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif; line-height: 13px;&quot;&gt;recursiva a QuickSort en el cuerpo especifica que se concatenará el&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif; line-height: 13px;&quot;&gt;nuevo elemento (y o z) a la lista de argumento siempre y cuando se&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif; line-height: 13px;&quot;&gt;cumpla con la condición de más a la derecha (ej. y &amp;lt;= x).&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; font-family: Helvetica, sans-serif; line-height: 13px;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif; line-height: 13px;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif; line-height: 13px;&quot;&gt;Comparemos ahora nuestro sencillo programa funcional con uno&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif; line-height: 13px;&quot;&gt;en un lenguaje procedimental, tal como C (Wikipedia 2008):&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;//Programa Quicksort en C&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;void quicksort(int* array, int left, int right)&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;&amp;nbsp;{&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;&amp;nbsp; &amp;nbsp; if(left &amp;gt;= right)&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;&amp;nbsp; &amp;nbsp; int index = partition(array, left, right);&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;&amp;nbsp; &amp;nbsp; quicksort(array, left, index - 1);&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;&amp;nbsp; &amp;nbsp; quicksort(array, index + 1, right);&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;int partition(int* array, int left, int right)&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;&amp;nbsp; &amp;nbsp; findMedianOfMedians(array, left, right);&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;&amp;nbsp; &amp;nbsp; int pivotIndex = left, pivotValue = array[pivotIndex], index =&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;left, i;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;&amp;nbsp; &amp;nbsp; swap(&amp;amp;array[pivotIndex], &amp;amp;array[right]);&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;&amp;nbsp; &amp;nbsp; for(i = left; i &amp;lt; right; i++)&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;&amp;nbsp;{ &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if(array[i] &amp;lt; pivotValue)&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;&amp;nbsp;{ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; swap(&amp;amp;array[i], &amp;amp;array[index]);&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; index += 1;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;&amp;nbsp;} &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;&amp;nbsp;} &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;&amp;nbsp; &amp;nbsp; swap(&amp;amp;array[right], &amp;amp;array[index]);&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;&amp;nbsp; &amp;nbsp; return index;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;&amp;nbsp;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;int findMedianOfMedians(int* array, int left, int right)&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;&amp;nbsp;{&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;&amp;nbsp; &amp;nbsp; if(left == right)&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return array[left];&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;&amp;nbsp; &amp;nbsp; int i, shift = 1;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;&amp;nbsp; &amp;nbsp; while(shift &amp;lt;= (right - left))&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;&amp;nbsp;{ &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for(i = left; i &amp;lt;= right; i+=shift*5)&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;&amp;nbsp;{ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int endIndex = (i + shift*5 - 1 &amp;lt; right) ? i + shift*5&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;- 1 : right;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int medianIndex = findMedianIndex(array, i, endIndex,&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;shift);&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; swap(&amp;amp;array[i], &amp;amp;array[medianIndex]);&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;&amp;nbsp;} &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; shift *= 5;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;&amp;nbsp;} &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;&amp;nbsp; &amp;nbsp; return array[left]; Cuadernos de la Facultad n. 3, 2008&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;&amp;nbsp;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;int findMedianIndex(int* array, int left, int right, int shift)&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;&amp;nbsp;{&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;&amp;nbsp; &amp;nbsp; int i, groups = (right - left)/shift + 1, k = left +&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;groups/2*shift;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;&amp;nbsp; &amp;nbsp; for(i = left; i &amp;lt;= k; i+= shift)&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;&amp;nbsp;{ &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int minIndex = i, minValue = array[minIndex], j;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for(j = i; j &amp;lt;= right; j+=shift)&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if(array[j] &amp;lt; minValue)&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;&amp;nbsp;{ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; minIndex = j;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; minValue = array[minIndex];&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;&amp;nbsp;} &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; swap(&amp;amp;array[i], &amp;amp;array[minIndex]);&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;&amp;nbsp; } &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;&amp;nbsp; &amp;nbsp; return k;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;void swap(int* a, int* b)&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;&amp;nbsp;{&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;&amp;nbsp; &amp;nbsp; int temp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;&amp;nbsp; &amp;nbsp; temp = *a;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;&amp;nbsp; &amp;nbsp; *a = *b;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;&amp;nbsp; &amp;nbsp; *b = temp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; font-family: Helvetica, sans-serif; line-height: 13px;&quot;&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; font-family: Helvetica, sans-serif; line-height: 13px;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif; line-height: 13px;&quot;&gt;Para demostrar las principales características de los lenguajes de&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif; line-height: 13px;&quot;&gt;programación funcionales modernos, vamos a utilizar el lengu&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif; line-height: 13px;&quot;&gt;aje&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif; line-height: 13px;&quot;&gt;Haskell. Este es un lenguaje funcional puro, de propósito general, que&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif; line-height: 13px;&quot;&gt;incluye muchas de las últimas innovaciones en el desarrollo de los&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif; line-height: 13px;&quot;&gt;lenguajes de programación funcional, como son las funciones de orden&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif; line-height: 13px;&quot;&gt;superior, evaluación perezosa (lazy evaluation), tipos polimórficos&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif; line-height: 13px;&quot;&gt;estáticos, tipos definidos por el usuario, encaje por patrones (pattern&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif; line-height: 13px;&quot;&gt;matching), y definiciones de listas por comprensión. Tiene además otras&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif; line-height: 13px;&quot;&gt;características interesantes como&amp;nbsp; el tratamiento sistemático d&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif; line-height: 13px;&quot;&gt;e la&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif; line-height: 13px;&quot;&gt;sobrecarga, la facilidad en la definición de tipos abstractos de datos, el&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif; line-height: 13px;&quot;&gt;sistema de entrada/salida puramente funcional y la posibilidad de&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif; line-height: 13px;&quot;&gt;utilización de módulos. Aunque seria imposible explicar con detalle cada&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif; line-height: 13px;&quot;&gt;una de estas características en este artículo, daremos una breve&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif; line-height: 13px;&quot;&gt;explicación de alguna de ellas. El lector interesado puede recurrir a un&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif; line-height: 13px;&quot;&gt;excelente libro en castellano (Ruiz 2004) y otros dos en inglés&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;line-height: 13px;&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;(Thompson 1999; Doets &amp;amp; van Eijck 2004) para profundizar en el tema.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; line-height: 13px;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;line-height: 13px; margin-bottom: 0.0001pt; margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; text-align: justify;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; font-family: Arial, sans-serif;&quot;&gt;&lt;b&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; Programación Estructurada&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: Arial, Helvetica, sans-serif; line-height: 13px; margin-bottom: 0.0001pt; margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; text-align: justify;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: Arial, Helvetica, sans-serif; line-height: 13px; margin-bottom: 0.0001pt; margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; text-align: justify;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;font-family: Arial, sans-serif;&quot;&gt;La programación estructurada es una forma de escribir programas de ordenador (programación de computadora )&lt;/span&gt;&lt;span lang=&quot;ES-VE&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: Arial, Helvetica, sans-serif; line-height: 13px; margin-bottom: 0.0001pt; margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; text-align: justify;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;span class=&quot;apple-style-span&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;font-family: Arial, sans-serif;&quot;&gt;de forma clara. Para ello utiliza únicamente tres estructuras: secuencia, selección e iteración; siendo innecesario&lt;/span&gt;&lt;/span&gt;&lt;span lang=&quot;ES-VE&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: Arial, Helvetica, sans-serif; line-height: 13px; margin-bottom: 0.0001pt; margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; text-align: justify;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;span class=&quot;apple-style-span&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;font-family: Arial, sans-serif;&quot;&gt;y no permitiéndose el uso de la instrucción o instrucciones de transferencia incondicional (GOTO, EXIT&lt;/span&gt;&lt;/span&gt;&lt;span lang=&quot;ES-VE&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: Arial, Helvetica, sans-serif; line-height: 13px; margin-bottom: 0.0001pt; margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; text-align: justify;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;span class=&quot;apple-style-span&quot;&gt;&lt;span style=&quot;font-family: Arial, sans-serif;&quot;&gt;FUNCTION, EXIT SUB o múltiples RETURN).&lt;/span&gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: Arial, Helvetica, sans-serif; line-height: 13px; margin-bottom: 0.0001pt; margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; text-align: justify;&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c; font-family: Arial, sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: Arial, Helvetica, sans-serif; line-height: 13px; margin-bottom: 0.0001pt; margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; text-align: justify;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;font-family: Arial, sans-serif;&quot;&gt;Hoy en día las aplicaciones informáticas son mucho más ambiciosas que las necesidades de programación existentes en los años 1960, principalmente debido a las aplicaciones gráficas, por lo que las técnicas de programación estructurada no son suficientes. Ello ha llevado al desarrollo de nuevas técnicas, tales como la programación orientada a objetos y el desarrollo de entornos de programación que facilitan la programación de grandes aplicaciones.&lt;/span&gt;&lt;span lang=&quot;ES-VE&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: Arial, Helvetica, sans-serif; line-height: 13px; margin-bottom: 0.0001pt; margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; text-align: justify;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: Arial, Helvetica, sans-serif; line-height: 13px; margin-bottom: 0.0001pt; margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; text-align: justify;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, sans-serif;&quot;&gt;A finales de los años 1960 surgió una nueva forma de programar que no solamente daba lugar a programas fiables y eficientes, sino que además estaban escritos de manera que facilitaba su comprensión posterior.&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, sans-serif;&quot;&gt;El teorema del programa estructurado, demostrado por Böhm-Jacopini, demuestra que todo programa puede escribirse utilizando únicamente las tres instrucciones de control siguientes:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: Arial, Helvetica, sans-serif; line-height: 13px; margin-bottom: 0.0001pt; margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; text-align: justify;&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c; font-family: Arial, sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 13px; margin-bottom: 0.0001pt; margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; text-align: justify;&quot;&gt;&lt;/div&gt;&lt;ul style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; font-family: Arial, sans-serif;&quot;&gt;Secuencia&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; font-family: Arial, sans-serif;&quot;&gt;Instrucción condicional.&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; font-family: Arial, sans-serif;&quot;&gt;Iteración (bucle de instrucciones) con condición al principio.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; font-family: Arial, sans-serif;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;font-family: Arial, Helvetica, sans-serif; line-height: 13px; margin-bottom: 0.0001pt; margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; text-align: justify;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;font-family: Arial, sans-serif;&quot;&gt; Solamente con estas tres estructuras se pueden escribir todos los programas y aplicaciones posibles. Si bien los lenguajes de programación tienen un mayor repertorio de estructuras de control , éstas pueden ser construidas mediante las tres básicas.&lt;/span&gt;&lt;span lang=&quot;ES-VE&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: Arial, Helvetica, sans-serif; line-height: 13px; margin-bottom: 0.0001pt; margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; text-align: justify;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;margin-bottom: 0.0001pt; margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; text-align: justify;&quot;&gt;&lt;/div&gt;&lt;ul&gt;&lt;li style=&quot;font-family: Arial, Helvetica, sans-serif; line-height: 13px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; font-family: Arial, sans-serif;&quot;&gt;Con la programación estructurada, elaborar programas de computador sigue siendo una labor que exige esfuerzo, creatividad, habilidad y cuidado. Sin embargo, con este estilo podemos obtener las siguientes ventajas.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; font-family: Arial, sans-serif; line-height: 13px;&quot;&gt;Los programas son más fáciles de entender, ya que pueden ser leídos de forma secuencial, sin necesidad de hacer seguimiento a saltos de línea (GOTO) dentro de los bloques de código para entender la lógica.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; font-family: Arial, sans-serif; line-height: 13px;&quot;&gt;La estructura del programa es clara, puesto que las instrucciones están más ligadas o relacionadas entre sí.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; font-family: Arial, sans-serif; line-height: 13px;&quot;&gt;Reducción del esfuerzo en las pruebas. El seguimiento de los fallos o errores del programa (&quot;debugging&quot;) se facilita debido a la estructura más visible, por lo que los errores se pueden detectar y corregir más fácilmente.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; font-family: Arial, sans-serif; line-height: 13px;&quot;&gt;Reducción de los costes de mantenimiento de los programas.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; font-family: Arial, sans-serif; line-height: 13px;&quot;&gt;Programas más sencillos y más rápidos (ya que es más fácil su optimización).&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; font-family: Arial, sans-serif; line-height: 13px;&quot;&gt;Los bloques de código son auto explicativos, lo que facilita la documentación.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; font-family: Arial, sans-serif; line-height: 13px;&quot;&gt;Los GOTO se reservan para construir las instrucciones básicas. Aunque no se usan de forma directa, por estar prohibida su utilización, están incluidas implícitamente en las instrucciones de selección e iteración.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; font-family: Arial, sans-serif; line-height: 13px;&quot;&gt;Un programa escrito de acuerdo a estos principios no solamente tendrá una mejor estructura sino también una excelente presentación.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; font-family: Arial, sans-serif; line-height: 13px;&quot;&gt;La programación estructurada ofrece estos beneficios, pero no se la debe considerar como una panacea ya que el desarrollo de programas es, principalmente, una tarea de dedicación, esfuerzo y creatividad.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; font-family: Arial, sans-serif; line-height: 13px;&quot;&gt;El principal inconveniente de este método de programación es que se obtiene un único bloque de programa, que cuando se hace demasiado grande puede resultar problemático su manejo; esto se resuelve empleando la programación modular, definiendo módulos interdependientes programados y compilados por separado (en realidad esto no es necesario, pero así ha sido históricamente). Un método un poco más sofisticado es la programación por capas, en la que los módulos tienen una estructura jerárquica en la que se pueden definir funciones dentro de funciones o de procedimientos.&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;line-height: 13px; margin-bottom: 0.0001pt; margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; text-align: justify;&quot;&gt;&lt;div style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c; font-family: Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c; font-family: Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c; font-family: Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Programación Orientada a Objetos.&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c; font-family: Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; text-align: justify;&quot;&gt;&lt;span lang=&quot;ES-VE&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span lang=&quot;ES-VE&quot;&gt;Los objetos son entidades que combinan&lt;/span&gt;&lt;span lang=&quot;ES-VE&quot;&gt;&amp;nbsp;&lt;i&gt;estado&lt;/i&gt;&lt;/span&gt;&lt;span lang=&quot;ES-VE&quot;&gt;,&lt;/span&gt;&lt;span lang=&quot;ES-VE&quot;&gt;&amp;nbsp;&lt;i&gt;comportamiento&lt;/i&gt;&amp;nbsp;&lt;/span&gt;&lt;span lang=&quot;ES-VE&quot;&gt;e identidad. El estado está compuesto de datos, y el comportamiento por procedimientos o&lt;/span&gt;&lt;span lang=&quot;ES-VE&quot;&gt;&amp;nbsp;&lt;i&gt;métodos&lt;/i&gt;&lt;/span&gt;&lt;span lang=&quot;ES-VE&quot;&gt;. La identidad es una propiedad de un objeto que lo diferencia del resto. La programación orientada a objetos expresa un programa como un conjunto de estos objetos, que colaboran entre ellos para realizar tareas. Esto permite hacer los programas y módulos más fáciles de escribir, mantener y reutilizar.&lt;/span&gt;&lt;span lang=&quot;ES-VE&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; text-align: justify;&quot;&gt;&lt;span lang=&quot;ES-VE&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;  &lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; text-align: justify;&quot;&gt;&lt;span lang=&quot;ES-VE&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span lang=&quot;ES-VE&quot;&gt;De esta forma, un objeto contiene toda la información que permite definirlo e identificarlo frente a otros objetos pertenecientes a otras clases e incluso frente a objetos de una misma clase, al poder tener valores bien diferenciados en sus atributos. A su vez, los objetos disponen de mecanismos de interacción llamados métodos que favorecen la comunicación entre ellos. Esta comunicación favorece a su vez el cambio de estado en los propios objetos. Esta característica lleva a tratarlos como unidades indivisibles, en las que no se separan ni deben separarse el estado y el comportamiento.&lt;/span&gt;&lt;span lang=&quot;ES-VE&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; text-align: justify;&quot;&gt;&lt;span lang=&quot;ES-VE&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; text-align: justify;&quot;&gt;&lt;span lang=&quot;ES-VE&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span lang=&quot;ES-VE&quot;&gt;Los métodos y atributos están estrechamente relacionados por la propiedad de conjunto. Esta propiedad destaca que una clase requiere de métodos para poder tratar los atributos con los que cuenta. El desarrollador debe pensar indistintamente en ambos conceptos, sin separar ni darle mayor importancia a ninguno de ellos. Hacerlo podría resultar en seguir el hábito erróneo de crear clases contenedoras de información por un lado y clases con métodos que la manejen por el otro. De esta manera se estaría llegando a una programación estructurada camuflada en un lenguaje de programación orientado a objetos.&lt;/span&gt;&lt;span lang=&quot;ES-VE&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; text-align: justify;&quot;&gt;&lt;span lang=&quot;ES-VE&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; text-align: justify;&quot;&gt;&lt;span lang=&quot;ES-VE&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span lang=&quot;ES-VE&quot;&gt;Los conceptos de la programación orientada a objetos tienen origen en Simula 67, un lenguaje diseñado para hacer simulaciones, creado por Ole-Johan Dahl y Kristen Nygaard del&lt;/span&gt;&lt;span lang=&quot;ES-VE&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;http://es.wikipedia.org/w/index.php?title=Centro_de_C%C3%B3mputo_Noruego&amp;amp;action=edit&quot; title=&quot;Centro de Cómputo Noruego&quot;&gt;&lt;span lang=&quot;ES-VE&quot;&gt;Centro de Cómputo Noruego&lt;/span&gt;&lt;/a&gt;&lt;span lang=&quot;ES-VE&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span lang=&quot;ES-VE&quot;&gt;en Oslo. Según se informa, la historia es que trabajaban en simulaciones de naves, y fueron confundidos por la explosión combinatoria de cómo las diversas cualidades de diversas naves podían afectar unas a las otras. La idea ocurrió para agrupar los diversos tipos de naves en diversas clases de objetos, siendo responsable cada clase de objetos de definir sus&lt;/span&gt;&lt;span lang=&quot;ES-VE&quot;&gt;&amp;nbsp;&lt;i&gt;propios&lt;/i&gt;&amp;nbsp;&lt;/span&gt;&lt;span lang=&quot;ES-VE&quot;&gt;datos y comportamiento. Fueron refinados más tarde en Smalltalk, que fue desarrollado en Simula en Xerox PARC (y cuya primera versión fue escrita sobre Basic) pero diseñado para ser un sistema completamente dinámico en el cual los objetos se podrían crear y modificar “en marcha” en lugar de tener un sistema basado en programas estáticos.&lt;/span&gt;&lt;span lang=&quot;ES-VE&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; text-align: justify;&quot;&gt;&lt;span lang=&quot;ES-VE&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal;&quot;&gt;&lt;span lang=&quot;ES-VE&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span lang=&quot;ES-VE&quot;&gt;Conceptos fundamentales&amp;nbsp;La programación orientada a objetos es una nueva 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. &lt;/span&gt;Entre ellos destacan los siguientes:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;ul type=&quot;disc&quot;&gt;&lt;li class=&quot;MsoNormal&quot; style=&quot;line-height: normal;&quot;&gt;&lt;span lang=&quot;ES-VE&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;span lang=&quot;ES-VE&quot;&gt;Objeto&lt;/span&gt;&lt;/b&gt;&lt;span lang=&quot;ES-VE&quot;&gt;: entidad provista de un      conjunto de propiedades o atributos (datos) y de comportamiento o      funcionalidad (métodos). Corresponden a los objetos reales del mundo que      nos rodea, o a objetos internos del sistema (del programa). &lt;/span&gt;Es una instancia a una clase.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;
&lt;li class=&quot;MsoNormal&quot; style=&quot;line-height: normal;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;span lang=&quot;ES-VE&quot;&gt;Clase&lt;/span&gt;&lt;/b&gt;&lt;span lang=&quot;ES-VE&quot;&gt;: 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.&lt;/span&gt;&lt;span lang=&quot;ES-VE&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot; style=&quot;line-height: normal;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;span lang=&quot;ES-VE&quot;&gt;Método&lt;/span&gt;&lt;/b&gt;&lt;span lang=&quot;ES-VE&quot;&gt;: algoritmo asociado a un      objeto (o a una clase de objetos), cuya ejecución se desencadena tras la      recepción de un “mensaje”. 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 “evento” con un nuevo      mensaje para otro objeto del sistema.&lt;/span&gt;&lt;span lang=&quot;ES-VE&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot; style=&quot;line-height: normal;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;span lang=&quot;ES-VE&quot;&gt;Evento&lt;/span&gt;&lt;/b&gt;&lt;span lang=&quot;ES-VE&quot;&gt;: 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.&lt;/span&gt;&lt;span lang=&quot;ES-VE&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot; style=&quot;line-height: normal;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;span lang=&quot;ES-VE&quot;&gt;Mensaje&lt;/span&gt;&lt;/b&gt;&lt;span lang=&quot;ES-VE&quot;&gt;: 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ó.&lt;/span&gt;&lt;span lang=&quot;ES-VE&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot; style=&quot;line-height: normal;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;span lang=&quot;ES-VE&quot;&gt;Propiedad o atributo&lt;/span&gt;&lt;/b&gt;&lt;span lang=&quot;ES-VE&quot;&gt;: 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.&lt;/span&gt;&lt;span lang=&quot;ES-VE&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot; style=&quot;line-height: normal;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;span lang=&quot;ES-VE&quot;&gt;Estado interno&lt;/span&gt;&lt;/b&gt;&lt;span lang=&quot;ES-VE&quot;&gt;: es una propiedad invisible de      los objetos, 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).&lt;/span&gt;&lt;span lang=&quot;ES-VE&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot; style=&quot;line-height: normal;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;span lang=&quot;ES-VE&quot;&gt;Componentes de un objeto&lt;/span&gt;&lt;/b&gt;&lt;span lang=&quot;ES-VE&quot;&gt;:      atributos, identidad, relaciones y métodos.&lt;/span&gt;&lt;span lang=&quot;ES-VE&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot; style=&quot;line-height: normal;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;span lang=&quot;ES-VE&quot;&gt;Representación de un objeto&lt;/span&gt;&lt;/b&gt;&lt;span lang=&quot;ES-VE&quot;&gt;: un      objeto se representa por medio de una tabla o entidad que esté compuesta      por sus atributos y funciones correspondientes.&lt;/span&gt;&lt;span lang=&quot;ES-VE&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/span&gt;&lt;/ul&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal;&quot;&gt;&lt;span lang=&quot;ES-VE&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span lang=&quot;ES-VE&quot;&gt;Algunas características:&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;ul type=&quot;disc&quot;&gt;&lt;li class=&quot;MsoNormal&quot; style=&quot;line-height: normal;&quot;&gt;&lt;span lang=&quot;ES-VE&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c; font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;span lang=&quot;ES-VE&quot;&gt;Abstracción&lt;/span&gt;&lt;/b&gt;&lt;span lang=&quot;ES-VE&quot;&gt;: Cada objeto en el sistema      sirve como modelo de un “agente” abstracto que puede realizar trabajo,      informar y cambiar su estado, y “comunicarse” con otros objetos en el      sistema sin revelar&lt;/span&gt;&lt;span lang=&quot;ES-VE&quot;&gt;&amp;nbsp;&lt;i&gt;cómo&lt;/i&gt;&amp;nbsp;&lt;/span&gt;&lt;span lang=&quot;ES-VE&quot;&gt;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.&lt;/span&gt;&lt;span lang=&quot;ES-VE&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;
&lt;li class=&quot;MsoNormal&quot; style=&quot;line-height: normal;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;span lang=&quot;ES-VE&quot;&gt;Encapsulamiento&lt;/span&gt;&lt;/b&gt;&lt;span lang=&quot;ES-VE&quot;&gt;: Significa reunir a todos los      elementos que pueden considerarse pertenecientes a una misma entidad, al      mismo nivel de abstracción. Esto permite aumentar la cohesión de los      componentes del sistema. Algunos autores confunden este concepto con el      principio de ocultación, principalmente porque se suelen emplear      conjuntamente.&lt;/span&gt;&lt;span lang=&quot;ES-VE&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot; style=&quot;line-height: normal;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;span lang=&quot;ES-VE&quot;&gt;Principio de ocultación&lt;/span&gt;&lt;/b&gt;&lt;span lang=&quot;ES-VE&quot;&gt;: Cada      objeto está aislado del exterior, es un módulo natural, y cada tipo de      objeto expone una&lt;/span&gt;&lt;span lang=&quot;ES-VE&quot;&gt;&amp;nbsp;&lt;i&gt;interfaz&lt;/i&gt;&amp;nbsp;&lt;/span&gt;&lt;span lang=&quot;ES-VE&quot;&gt;a otros      objetos que específica cómo pueden interactuar con los objetos de la      clase.&lt;/span&gt;&lt;span lang=&quot;ES-VE&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot; style=&quot;line-height: normal;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;span lang=&quot;ES-VE&quot;&gt;Polimorfismo&lt;/span&gt;&lt;/b&gt;&lt;span lang=&quot;ES-VE&quot;&gt;: 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.&lt;/span&gt;&lt;span lang=&quot;ES-VE&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot; style=&quot;line-height: normal;&quot;&gt;&lt;b style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span lang=&quot;ES-VE&quot;&gt;&amp;nbsp;Herencia&lt;/span&gt;&lt;/b&gt;&lt;span lang=&quot;ES-VE&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;: 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.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/span&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; line-height: 13px;&quot;&gt;&lt;b&gt;&lt;i&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c;&quot;&gt;&amp;nbsp; &amp;nbsp; Programación orientada a Aspectos.&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;La programación orientada a&amp;nbsp; aspectos &amp;nbsp;pretende dar solución a las tareas o eventos &amp;nbsp;repetitivos que pueden, en un momento&amp;nbsp; dado, retrasan la construcción de un&amp;nbsp; software. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;La Programación orientada a Aspectos &amp;nbsp;constituye&amp;nbsp; uno los avances más importantes&amp;nbsp; de los últimos años en la ingeniería del&amp;nbsp; software para edificar sistemas complejos&amp;nbsp; empleando el principio de descomposición, &amp;nbsp;ya que el modelo de objetos subyacente se &amp;nbsp;ajusta mejor a los problemas del dominio&amp;nbsp; real que la descomposición funcional.&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;La ventaja que tiene es que es fácil la integración de nuevos datos, aunque también quedan las funciones esparcidas por todo el código, y tiene los inconvenientes de que, con frecuencia, para realizar la integración de nuevas funciones hay&amp;nbsp; que modificar varios objetos, y de que se produce un enmarañamiento de los objetos en funciones de alto nivel que involucran a varias clases.&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;La POA es una nueva metodología de programación que aspira a soportar la separación de las propiedades para los aspectos antes mencionados.&amp;nbsp; Esto implica separar la funcionalidad básica y los aspectos, y los aspectos entre sí, a través de mecanismos que permitan abstraerlos y componerlos para formar todo el sistema. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;La POA es un desarrollo que sigue a la POO, y como tal, soporta la descomposición orientada a objetos, además de la procedimental y la funcional. Sin embargo, la programación orientada a aspectos no es una extensión de la POO, ya que puede utilizarse con los diferentes estilos de programación mencionados anteriormente. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;Aplicando POA se puede escribir una funcionalidad básica&amp;nbsp; “pura”, y especificar cada aspecto por separado.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;Luego, existe un proceso de combinación que compondrá el sistema final. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;La POA permite a los desarrolladores escribir, ver, y editar un aspecto diseminado por todo el sistema como una entidad por separado, de una manera inteligente, eficiente e intuitiva.&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;En&amp;nbsp; este&amp;nbsp; artículo&amp;nbsp; mostraré&amp;nbsp; la&amp;nbsp;&amp;nbsp;&amp;nbsp; aplicación, metodología utilizada para convertir una implementación tradicional en una que considere aspectos basándome en los principios de la POA. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;Entre los principales objetivos de la Programación Orientada a Aspectos tenemos: &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c;&quot;&gt;Separar las funcionalidades comunes utilizadas en toda la aplicación como: algunos eventos, validaciones, mensajes, etc.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c;&quot;&gt;Separar las funcionalidades propias de cada modulo que no hacen parte de las anteriores como por ejemplo en calculo de alguna fórmula en un modulo especifico o lo que se podría llamar las reglas del negocio o la capa BL , por sus siglas en Ingles.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;El aporte aquí seria que cuando se inicia la construcción de un proyecto de&amp;nbsp; software&amp;nbsp; o&amp;nbsp; un&amp;nbsp; modulo&amp;nbsp; se&amp;nbsp; deben pensaren aquellos eventos, validaciones o métodos que podrán ser reutilizados o llamados de diferentes instancias del aplicativo, para con esto poder crear librerías, frameworks, Dlls, Componente, etc.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;El concepto de programación orientada a aspectos fue introducido por Gregor Kiczales y su grupo, aunque el equipo Demeter había estado utilizando ideas orientadas a aspectos antes incluso de que se acuñara el término.&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;span lang=&quot;ES-VE&quot;&gt;&lt;/span&gt;El trabajo del grupo Demeter estaba centrado en la programación adaptativa, que no es más que una instancia temprana de la programación orientada a aspectos. La programación adaptativa se introdujo alrededor de 1991.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c;&quot;&gt;Aquí los programas se dividían en varios&amp;nbsp; bloques de cortes. Inicialmente, se separaban la representación de los objetos del sistema de cortes. Luego se añadieron comportamientos de estructuras y estructuras de clases como bloques constructores de cortes. Cristina Lopes propuso la sincronización y la invocación remota como nuevos bloques. No fue hasta 1995 cuando se publicó la primera definición temprana del concepto de aspecto realizada también por el grupo Demeter. Gracias a la colaboración de Cristina Lopes y Karl J. Lieberherr con Gregor Kiczales y su grupo se introdujo el término de programación orientada a aspectos.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;La idea central que pretende la POA es admitir que un programa sea construido describiendo cada concepto separadamente. La POA muestra&amp;nbsp; la separación de conceptos a través de mecanismos, que permiten abstraer y componer estos conceptos a lo largo del sistema. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;Mediante una clase especial de lenguajes, llamados lenguajes orientados a aspectos (LOA), los cuales nos muestran mecanismos y constructores para la captura de los elementos que se diseminan por todos el sistema; lo cual logró ser el soporte fundamental para este nuevo paradigma POA. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;A estos elementos se los denomina aspectos,&amp;nbsp; cuya definición sería que un&amp;nbsp;&amp;nbsp; aspecto es un concepto que no es&amp;nbsp; posible encapsularlo claramente, y que resulta diseminado por todo el código.&amp;nbsp; Los LOA dar cumplimiento a las siguientes propiedades: &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c;&quot;&gt;Cada aspecto debe ser claramente identificable.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c;&quot;&gt;Cada aspecto debe auto-contenerse.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c;&quot;&gt;Los aspectos deben ser fácilmente intercambiables.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c;&quot;&gt;Los aspectos no deben interferir entre ellos.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c;&quot;&gt;Los aspectos no deben interferir con los mecanismos usados para definir y evolucionar la funcionalidad, como la herencia.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;Aplicando POA se puede escribir una funcionalidad básica&amp;nbsp; “pura”, y especificar cada aspecto por separado. Luego, existe un proceso de combinación que compondrá el &amp;nbsp;sistema final. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;Los puntos de enlace brindan la interfaz entre&amp;nbsp; aspectos y componentes. Son lugares dentro del código donde es posible agregar comportamiento adicional. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;El comportamiento adicional puede agregarse en tres momentos particulares: antes, después, en lugar de. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;El encargado de la composición es llamado Weaver. Guiado por los&amp;nbsp; puntos de enlace teje el código base con el código de los aspectos.&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;Los tres principales requerimientos de la POA son: &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c;&quot;&gt;Un lenguaje para definir la funcionalidad básica, conocido como&amp;nbsp; lenguaje&amp;nbsp; base&amp;nbsp; o componente. Podría ser un lenguaje imperativo, o un lenguaje no imperativo (C++, Java, Lisp, ML).&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c;&quot;&gt;Uno o varios lenguajes de aspectos, para especificar el comportamiento de los aspectos. (COOL, para sincronización, RIDL, para distribución, AspectJ, de propósito general.)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c;&quot;&gt;Un tejedor de aspectos (Weaver), que se encargará de combinar los lenguajes. Tal proceso se puede retrasar para hacerse en tiempo de ejecución o en tiempo de compilación.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;Los lenguajes orientados a aspectos muestran&amp;nbsp; una manera diferente&amp;nbsp; de programación de software para encapsular aquellos conceptos que cruzan todo el código.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;Para que los aspectos y componentes se puedan mezclar, deben tener algunos puntos comunes, que son los que se conocen como puntos de enlace. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;Los puntos de enlace brindan la interfaz entre aspectos y componentes; son lugares dentro del código donde es posible agregar el comportamiento adicional que destaca a la POA. Dicho comportamiento adicional es especificado en los aspectos. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;A quien realiza el proceso de tejer se lo denomina&amp;nbsp; tejedor (weaver), que es quien se encarga de mezclar los diferentes mecanismos de abstracción y composición que surgen en los lenguajes de aspectos y componentes ayudándose de los puntos de enlace. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;La estructura de una implementación basada en aspectos es análoga&amp;nbsp; con relación a la estructura de una implementación basada en los LPG. Una implementación basada en LPG consiste en: &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c;&quot;&gt;Un lenguaje.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c;&quot;&gt;Un compilador o intérprete para ese lenguaje.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c;&quot;&gt;Un programa escrito en ese lenguaje que implemente la aplicación.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhnrnPNGMz-dcGv03-RCxD5SRu0C8DhPbw_Qh2rNhUIcmdmMIpJDLhf9BKgYIDsW64UR6KWel284sfrU5ZywMcY1gXTV7Z4hixeWrKDPyrhWecP46mYBFjXadC_W0QHSl29RDrLdDjoVp8/s1600/untitled.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhnrnPNGMz-dcGv03-RCxD5SRu0C8DhPbw_Qh2rNhUIcmdmMIpJDLhf9BKgYIDsW64UR6KWel284sfrU5ZywMcY1gXTV7Z4hixeWrKDPyrhWecP46mYBFjXadC_W0QHSl29RDrLdDjoVp8/s320/untitled.JPG&quot; width=&quot;193&quot; /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;Una implementación basada en POA consiste en: &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c;&quot;&gt;El lenguaje base o componente para programar la funcionalidad básica.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c;&quot;&gt;Uno o más lenguajes de aspectos para &amp;nbsp;especificar los aspectos.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c;&quot;&gt;Un tejedor de aspectos para la combinación de los lenguajes.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c;&quot;&gt;El programa escrito en el lenguaje componente que implementa los &amp;nbsp;componentes.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c;&quot;&gt;Uno o más programas de aspectos que implementan los aspectos.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c;&quot;&gt;Gráficamente, se tiene una estructura como la siguiente:&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTbNtZIr1enx-6qwHbSAaW6s1mS6O55w6nFa5HBxbx9CMh5IXwfd3lPOj87l7vkQEfjWkb3I83hypOM0mqalfToaRXP4t5PeOZ2ZHps-u-uOcAjlk0QHgPD5medjQ69vQ_7fyWLg-96aM/s1600/untitled1.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;223&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTbNtZIr1enx-6qwHbSAaW6s1mS6O55w6nFa5HBxbx9CMh5IXwfd3lPOj87l7vkQEfjWkb3I83hypOM0mqalfToaRXP4t5PeOZ2ZHps-u-uOcAjlk0QHgPD5medjQ69vQ_7fyWLg-96aM/s320/untitled1.JPG&quot; width=&quot;320&quot; /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;Describiré&amp;nbsp; algunos conceptos de los lenguajes de mayor funcionalidad en la actualidad: &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;• JPAL.- Permite&amp;nbsp; separar los puntos de enlace, que son independientes del lenguaje base, de sus acciones asociadas que dependen de decisiones de implementación.&amp;nbsp; Permite generar un Esquema de &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;Tejedor (brinda un puente entre el control de la ejecución y la ejecución de la acción). Su principal aplicación es para la implementación de sistemas distribuidos.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisglBPuKVVQyyYDI4TJi2hDXGvUfU9iTBhFjRRrFDTnbCEDlIIbSnA1bjETuT8unUkAPcxvIFqea9xYsv1BmGSswVaTCgTqN8j6-Zy-_C6yUpJQHUqdVGWzbb6xpZUZEpodXjWZG2SjiU/s1600/untitled2.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;163&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisglBPuKVVQyyYDI4TJi2hDXGvUfU9iTBhFjRRrFDTnbCEDlIIbSnA1bjETuT8unUkAPcxvIFqea9xYsv1BmGSswVaTCgTqN8j6-Zy-_C6yUpJQHUqdVGWzbb6xpZUZEpodXjWZG2SjiU/s320/untitled2.JPG&quot; width=&quot;320&quot; /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;• D.-&amp;nbsp; Denominado ambiente de lenguajes, en vez de solamente lenguaje, porque consiste en realidad de dos lenguajes: COOL, para controlar la sincronización de hilos (threads), y RIDL, para programar la interacción entre componentes remotos. El diseño deD es semi-independiente del lenguaje componente, ya que D impone requerimientos sobre el lenguaje componente que satisfacen naturalmente los lenguajes orientados a objetos.&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;• COOL.-&amp;nbsp; COOL (COOrdination aspect Language) es un lenguaje de aspectos de dominio específico para tratar con la exclusión mutua de hilos, sincronización, suspensión y reactivación de hilos.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhD7gP5GJ4PQQ8CvElilmtdnE9uTxl34EG0_L2f1fSij75gQLYooqqSP1XbKRBdRGtPG89AkBUg8TzGlxoc-M0Lr8cv1OmY9ayo7jgJtSPZr3vi6vFQi9eLmJMOKy8W_G2jJ95cnn1xPXQ/s1600/untitled3.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;214&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhD7gP5GJ4PQQ8CvElilmtdnE9uTxl34EG0_L2f1fSij75gQLYooqqSP1XbKRBdRGtPG89AkBUg8TzGlxoc-M0Lr8cv1OmY9ayo7jgJtSPZr3vi6vFQi9eLmJMOKy8W_G2jJ95cnn1xPXQ/s320/untitled3.JPG&quot; width=&quot;320&quot; /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;• RIDL.-&amp;nbsp; RIDL (Remote Interaction and Data transfers aspect Language) es un lenguaje de aspectos de dominio específico que maneja la transferencia de datos entre diferentes espacios de ejecución.Un programa RIDL consiste de un conjunto de módulos de portales. Los módulos de portales o directamente portales se asocian con las clases por el nombre.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNHuOJMuHHjJYzs6X_Gp8ENZ3h30pftX4gNuNPptas3khK5QqTHXS9wRbDzXUwIHwYLQm1STkt0RxtXJVzS-7-dbghDheuqBqBu-ChmEG1MfXXZnbh4b2he9SzjVgvFwv7wRVmCIbhEWY/s1600/untitled4.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;229&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNHuOJMuHHjJYzs6X_Gp8ENZ3h30pftX4gNuNPptas3khK5QqTHXS9wRbDzXUwIHwYLQm1STkt0RxtXJVzS-7-dbghDheuqBqBu-ChmEG1MfXXZnbh4b2he9SzjVgvFwv7wRVmCIbhEWY/s320/untitled4.JPG&quot; width=&quot;320&quot; /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;• ASPECTC.-&amp;nbsp; AspectC es un simple lenguaje de aspectos de propósito general que extiende C, es un subconjunto de AspectJ sin ningún soporte para la programación orientada a objetos o módulos explícitos. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;• ASPECTS.-&amp;nbsp; AspectS,&amp;nbsp; un&amp;nbsp; lenguaje&amp;nbsp; de aspectos de propósito general, utiliza el modelo de lenguaje de spectJ y ayuda a descubrir la relación que hay entre los aspectos y los ambientes dinámicos. Soporta programación en un metanivel, manejando el fenómeno de&amp;nbsp; Código Mezclado&amp;nbsp; a través de módulos de aspectos relacionados. Está implementado en Squeak sin cambiar la sintaxis, ni la máquina virtual. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;• ASPECTC++.-&amp;nbsp; AspectC++[29] es un lenguaje de aspectos de propósito general que extiende el lenguaje C++ para soportar el manejo de aspectos. En este lenguaje los puntos de enlace son puntos en el código componente donde los aspectos pueden interferir. Los puntos de enlaces son capaces de referir a código, tipos, objetos, y flujos de control.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhswNotT5erGgwXd5E8eAbIa7gr6ouYFPlbup-6bQkkAw-CJlh-TDEhKHZSkcn0Z2vZMfeMJyggpyPFlFjxCHdqaS17rm__fZAxqurv9kdVCZAWJplqKIlY0mi6b87UHiK8mlmWq8WUolE/s1600/untitled5.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhswNotT5erGgwXd5E8eAbIa7gr6ouYFPlbup-6bQkkAw-CJlh-TDEhKHZSkcn0Z2vZMfeMJyggpyPFlFjxCHdqaS17rm__fZAxqurv9kdVCZAWJplqKIlY0mi6b87UHiK8mlmWq8WUolE/s320/untitled5.JPG&quot; width=&quot;271&quot; /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;• MALAJ.-&amp;nbsp; Malaj es un sistema que soporta la programación orientada a aspectos. Define constructores lingüísticos separados para cada aspecto de dominio específico, donde el código de los aspectos tiene una visibilidad limitada del código funcional, reduciendo los posibles conflictos con las características lingüísticas tradicionales y también, con el principio de encapsulación. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ES-VE&quot; style=&quot;color: #f9cb9c;&quot;&gt;• ASPECJ.-&amp;nbsp; AspectJ es un lenguaje orientado a aspectos de propósito general, cuya primera versión fue lanzada en 1998 por el equipo conformado por Gregor Kickzales (líder del proyecto), Ron Bodkin, Bill Griswold, Erik Hilsdale, Jim Hugunin, WesIsberg y Mik Kersten. &amp;nbsp;Es una herramienta que está en desarrollo y las nuevas versiones pueden tanto corregir errores de su versión predecesora como modificar el lenguaje.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFOP-mY39w4upFxIFNywJpnMk19ZDVXiYmdFmhMGoC7LMNCmKXXELV8mKH-2kvWq7IPLgMtOeXDHMdLCoOBS7ibwdMBrH5UKtx_i7Dh5rchdBrfUsT4ZUxrHEMT2aoadU3f2OvwYfNPZQ/s1600/untitled6.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #f9cb9c;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;138&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFOP-mY39w4upFxIFNywJpnMk19ZDVXiYmdFmhMGoC7LMNCmKXXELV8mKH-2kvWq7IPLgMtOeXDHMdLCoOBS7ibwdMBrH5UKtx_i7Dh5rchdBrfUsT4ZUxrHEMT2aoadU3f2OvwYfNPZQ/s320/untitled6.JPG&quot; width=&quot;320&quot; /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chirixworld.blogspot.com/feeds/1907592195984637488/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://chirixworld.blogspot.com/2011/05/paradigmas-de-la-programacion.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2573493147347573789/posts/default/1907592195984637488'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2573493147347573789/posts/default/1907592195984637488'/><link rel='alternate' type='text/html' href='http://chirixworld.blogspot.com/2011/05/paradigmas-de-la-programacion.html' title='Paradigmas de la Programación.'/><author><name>ChirixWorld</name><uri>http://www.blogger.com/profile/00986662016076566479</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhnrnPNGMz-dcGv03-RCxD5SRu0C8DhPbw_Qh2rNhUIcmdmMIpJDLhf9BKgYIDsW64UR6KWel284sfrU5ZywMcY1gXTV7Z4hixeWrKDPyrhWecP46mYBFjXadC_W0QHSl29RDrLdDjoVp8/s72-c/untitled.JPG" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2573493147347573789.post-1398084802406269130</id><published>2011-05-01T20:11:00.000-07:00</published><updated>2011-05-01T21:54:14.413-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Diagrama de Clases"/><category scheme="http://www.blogger.com/atom/ns#" term="Programacion"/><category scheme="http://www.blogger.com/atom/ns#" term="UCAB"/><category scheme="http://www.blogger.com/atom/ns#" term="UML"/><title type='text'>Ejemplo de Diagrama de Clases</title><content type='html'>Tarea #1 Para el blog, de Algoritmos y Programación III (Universidad Católica Andrés Bello)&lt;br /&gt;
&lt;br /&gt;
El enunciado del ejercicio es el siguiente:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Steve es un amante de los animales, pero a la vez un geek de la programación. El colecciona arañas, gatos y peces y ha decidido hacer un pequeño sistema para poder manejar su colección de animales. Para ello ha podido generar la siguiente información:&lt;br /&gt;
&lt;br /&gt;
Las arañas, gatos y peces son animales. Todo animal tiene un número de patas &amp;nbsp;(8, &amp;nbsp;4 y O respectivamente). Por lo general un animal puede caminar y comer, aunque evidentemente cada uno de ellos lo hace de forma diferente (los peces por ejemplo, no caminan). A los gatos y a los peces por lo general se les da un nombre y ambos son mascotas (a las arañas no importa darles un nombre y mucha gente considera que no son mascotas). Por cada mascota se desea poder darle un nombre, saber cual es ese nombre y jugar con él, aunque no todos los animales juegan de la misma manera.&lt;br /&gt;
&lt;br /&gt;
¿Puedes tratar de generar un diagrama de clases en UML que permita darle solución a la información suministrada por Steve?. Recuerda que él puede tener varios animales.&lt;br /&gt;
&lt;br /&gt;
Mi solución es la siguiente.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6V_B55h3Ill8aGuXolxY1t3xkQG3hX2Uqw5klnfEBa8onvnaCKoiQ-0XKi_p8Fn9TqGUcSXrnSZX46RziRmup07tfn_vLGh09XAoXUgCqEe8J81BMmpCnZ5XBRHHSxS-mwXOzYKjprAI/s1600/Class+Diagram1.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;245&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6V_B55h3Ill8aGuXolxY1t3xkQG3hX2Uqw5klnfEBa8onvnaCKoiQ-0XKi_p8Fn9TqGUcSXrnSZX46RziRmup07tfn_vLGh09XAoXUgCqEe8J81BMmpCnZ5XBRHHSxS-mwXOzYKjprAI/s400/Class+Diagram1.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;br /&gt;
-Clase Fish:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;La Cual tiene su atributo (nombre) ya que el enunciado especifica que toda mascota se le puede asignar uno. Manejo un constructor el cual manipulara el nombre y numero de patas del pescado, también podemos ver el Set and Get para poder visualizar u escribir el nombre del animal, el método eat y por último el método para jugar.&lt;br /&gt;
&lt;br /&gt;
-Clase Cat:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; Exactamente a nuestra anterior clase no hay mayores cambios.&lt;br /&gt;
&lt;br /&gt;
-Clase Spider:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; En esta clase podemos observar que solamente tiene su constructor y el&amp;nbsp;método&amp;nbsp;eat, ya que como lo dice el enunciado a las Arañas no se les considera mascotas por lo tanto no se les asigna un nombre.&lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
-Clase Pet:&lt;br /&gt;
&amp;nbsp; &amp;nbsp;Nuestras clases bases (pet y fish) implementan esta clase para obtener/fijar el nombre de una mascota o jugar.&lt;br /&gt;
&lt;br /&gt;
-Clase Animal: &lt;br /&gt;
&amp;nbsp; &amp;nbsp; Es la generalización de nuestras clases bases tanto pet, fish como spider son animales y esta clase tiene los métodos respectivos para caminar y comer.&lt;br /&gt;
&lt;br /&gt;
-Clase ListAnimal&lt;br /&gt;
&amp;nbsp; &amp;nbsp; Una clase controladora, donde podemos borrar/agregar/modificar/buscar todos los animales de Steve.&lt;br /&gt;
&lt;br /&gt;
Nota: Podemos ver la imagen en inglés ya que este semestre podemos decir que es un &quot;Standard&quot; en la materia.</content><link rel='replies' type='application/atom+xml' href='http://chirixworld.blogspot.com/feeds/1398084802406269130/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://chirixworld.blogspot.com/2011/05/ejemplo-de-diagrama-de-clases.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2573493147347573789/posts/default/1398084802406269130'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2573493147347573789/posts/default/1398084802406269130'/><link rel='alternate' type='text/html' href='http://chirixworld.blogspot.com/2011/05/ejemplo-de-diagrama-de-clases.html' title='Ejemplo de Diagrama de Clases'/><author><name>ChirixWorld</name><uri>http://www.blogger.com/profile/00986662016076566479</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6V_B55h3Ill8aGuXolxY1t3xkQG3hX2Uqw5klnfEBa8onvnaCKoiQ-0XKi_p8Fn9TqGUcSXrnSZX46RziRmup07tfn_vLGh09XAoXUgCqEe8J81BMmpCnZ5XBRHHSxS-mwXOzYKjprAI/s72-c/Class+Diagram1.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2573493147347573789.post-7483690751568778709</id><published>2011-04-11T14:39:00.000-07:00</published><updated>2011-04-12T21:38:54.181-07:00</updated><title type='text'>Presentación</title><content type='html'>Hola a todo/as, antes que nada mucho gusto.&lt;br /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;b&gt;Mi nombre:&lt;/b&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;César Chirino&lt;/div&gt;&lt;div&gt;&lt;b&gt;Mi&amp;nbsp;ocupación:&lt;/b&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;Estudiante de&amp;nbsp;Ingeniería&amp;nbsp;Informática&amp;nbsp;(UCAB)&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Mi&amp;nbsp;pasión:&lt;/b&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;O varias mejor dicho, Programar, Jugar, Leer, el Arte Digital.&lt;/div&gt;&lt;div&gt;&lt;b&gt;Mi&amp;nbsp;Ubicación:&lt;/b&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;Venezuela!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;¿Por qué Creo este Blog?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; ¿Cuanto tenemos que navegar para encontrar noticias realmente interesantes?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Se resume que tenemos que abrir desde 10 pestañas en un Navegador hasta pasar horas viendo noticias de nuestros intereses y en el camino leer muchas mas aburridas. En un intento de comprimir todo esto es un solo sitio creo este blog, claro algunos podrán decir que no todos tenemos los mismos gustos (es Valido) por eso&amp;nbsp;aquí&amp;nbsp;les relato sobre lo que Posteare.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;-Tecnología&lt;/div&gt;&lt;div&gt;-Hablare sobre Pascal / C / C++ / Java (También&amp;nbsp;puedo ayudar un poco a aquellos que empiezan a programar)&amp;nbsp;&lt;/div&gt;&lt;div&gt;-Estrenos de&amp;nbsp;Películas (Reseñas sobre&amp;nbsp;Películas&amp;nbsp;de gran&amp;nbsp;Interés, no&amp;nbsp;Farándula)&lt;/div&gt;&lt;div&gt;-Libros (Que en verdad merecen la pena ser&amp;nbsp;leídos)&lt;/div&gt;&lt;div&gt;-Juegos (Normalmente juegos Online)&lt;/div&gt;&lt;div&gt;-Chistes (soy amante de los BUENOS chistes)&lt;/div&gt;&lt;div&gt;-Arte Digital (Figura, Animaciones en 2D y 3D)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;-y bueno de todo un poco lo que ocurra en nuestras calles Venezolanas.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;(Seguramente Publicaré más cosas pero ahorita no se me ocurren jaja)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;PD: En pocas&amp;nbsp;ocasiones&amp;nbsp;escribiré&amp;nbsp;Testamentos (expresión&amp;nbsp;Venezolana para textos largos :D), siempre intentaré ser lo mas conciso posible. Como mucho de ustedes yo&amp;nbsp;también&amp;nbsp;me ladillo(fastidio/canso) de leer&amp;nbsp;tonterías.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chirixworld.blogspot.com/feeds/7483690751568778709/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://chirixworld.blogspot.com/2011/04/presentacion.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2573493147347573789/posts/default/7483690751568778709'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2573493147347573789/posts/default/7483690751568778709'/><link rel='alternate' type='text/html' href='http://chirixworld.blogspot.com/2011/04/presentacion.html' title='Presentación'/><author><name>ChirixWorld</name><uri>http://www.blogger.com/profile/00986662016076566479</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2573493147347573789.post-2498256756697984381</id><published>2011-04-11T14:11:00.000-07:00</published><updated>2011-04-11T14:11:55.459-07:00</updated><title type='text'>Primera entrada.</title><content type='html'>Lunes 11 de Abril de 2011&lt;br /&gt;
&lt;br /&gt;
Probando algunas cositas en&amp;nbsp;Internet, una de estas es crear este blog. ¿Blogs? una idea interesante, a ver si podemos hacer algo maravilloso en este, publicando&amp;nbsp;información de&amp;nbsp;Tecnología&amp;nbsp;día&amp;nbsp;a&amp;nbsp;día, Lenguajes de&amp;nbsp;Programación, Juegos y quien sabe cualquier cosa interesante que surja.</content><link rel='replies' type='application/atom+xml' href='http://chirixworld.blogspot.com/feeds/2498256756697984381/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://chirixworld.blogspot.com/2011/04/primera-entrada.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2573493147347573789/posts/default/2498256756697984381'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2573493147347573789/posts/default/2498256756697984381'/><link rel='alternate' type='text/html' href='http://chirixworld.blogspot.com/2011/04/primera-entrada.html' title='Primera entrada.'/><author><name>ChirixWorld</name><uri>http://www.blogger.com/profile/00986662016076566479</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>