<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Moises Ariza</title>
    <description>The latest articles on DEV Community by Moises Ariza (@arizamoisesco).</description>
    <link>https://dev.to/arizamoisesco</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F522530%2F3bb6a868-2f32-41f0-842b-a1a5046549f8.jpg</url>
      <title>DEV Community: Moises Ariza</title>
      <link>https://dev.to/arizamoisesco</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/arizamoisesco"/>
    <language>en</language>
    <item>
      <title>POO para principiantes. Aprende el pilar del encapsulamiento con Python</title>
      <dc:creator>Moises Ariza</dc:creator>
      <pubDate>Tue, 04 Apr 2023 15:37:59 +0000</pubDate>
      <link>https://dev.to/arizamoisesco/poo-para-principiantes-aprende-el-pilar-del-encapsulamiento-con-python-156l</link>
      <guid>https://dev.to/arizamoisesco/poo-para-principiantes-aprende-el-pilar-del-encapsulamiento-con-python-156l</guid>
      <description>&lt;p&gt;&lt;em&gt;Encuentra la publicación original en mi &lt;a href="https://dev.to/arizamoisesco/introduccion-rapida-a-lo-que-es-la-programacion-orientada-a-objetos-y-sus-caracteristicas-4b9"&gt;blog personal&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;En la &lt;a href="https://dev.to/arizamoisesco/introduccion-rapida-a-lo-que-es-la-programacion-orientada-a-objetos-y-sus-caracteristicas-4b9"&gt;publicación anterior&lt;/a&gt; comprendimos los principios teóricos del paradigma de POO, llego el momento de ponerlo en práctica, hoy nos concentraremos en el pilar del &lt;strong&gt;encapsulamiento y&lt;/strong&gt; haremos uso de mi lenguaje favorito que es python 🐍.&lt;/p&gt;

&lt;h2&gt;
  
  
  Herramientas que necesitas
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Un editor de código o IDE (Haré uso de &lt;a href="https://code.visualstudio.com/"&gt;visual studio code&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Contar con Python instalado en tu computador&lt;/li&gt;
&lt;li&gt;En caso de no tener instalado Python, puedes hacer uso de &lt;a href="https://replit.com/"&gt;replit.com&lt;/a&gt; (no necesitas instalar nada ;) )&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Encapsulamiento con Python
&lt;/h2&gt;

&lt;p&gt;El encapsulamiento es un mecanismo que permite ocultar los detalles de implementación de un objeto y exponer solo una interfaz pública para interactuar con él. En Python, se utiliza el prefijo de doble guion bajo para marcar un atributo o método como privado y que solo pueda ser accedido desde dentro de la clase.&lt;/p&gt;

&lt;p&gt;👀 Observa el siguiente código:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;carro&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;__init__&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;marca&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;modelo&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;precio&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;__marca&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;marca&lt;/span&gt;
        &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;__modelo&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;modelo&lt;/span&gt;
        &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;__precio&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;precio&lt;/span&gt;

    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;get_precio&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;__precio&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;En este ejemplo, la clase &lt;em&gt;carro&lt;/em&gt; tiene tres atributos: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Marca&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Modelo&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Precio&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Todos los atributos anteriores están marcados como privados gracias a la utilización del &lt;strong&gt;doble guion bajo al principio&lt;/strong&gt;, por lo que no pueden ser accedidos directamente desde fuera de la clase. &lt;/p&gt;

&lt;p&gt;Entonces, ¿cómo puedo emplearlos?, bueno para el caso que desees saber el precio del vehículo se ha definido el método &lt;strong&gt;&lt;em&gt;get_precio()&lt;/em&gt;&lt;/strong&gt; que devuelve ese valor. De esta manera, se protege el atributo &lt;em&gt;precio&lt;/em&gt; y se evita que se modifique accidentalmente desde fuera de la clase.&lt;/p&gt;

&lt;h2&gt;
  
  
  ¡Pongámoslo a prueba! 🔥
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Crearemos un automóvil &lt;strong&gt;mustang&lt;/strong&gt; instanciando nuestra clase &lt;em&gt;Carro&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Carro&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;__init__&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;marca&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;modelo&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;precio&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;__marca&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;marca&lt;/span&gt;
        &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;__modelo&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;modelo&lt;/span&gt;
        &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;__precio&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;precio&lt;/span&gt;

    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;get_precio&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;__precio&lt;/span&gt;

&lt;span class="n"&gt;mustang&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Carro&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Ford"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"Mustang"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;50000&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Luego probaremos acceder al precio con nuestro método&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;get_precio&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;__precio&lt;/span&gt;

&lt;span class="n"&gt;mustang&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Carro&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Ford"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"Mustang"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;50000&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;coche&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;get_precio&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;En consola debe salir el valor de &lt;em&gt;5000&lt;/em&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;En caso de que tengas dudas prueba acceder al atributo directamente&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;coche&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;__precio&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Te debe generar el siguiente error  &lt;strong&gt;&lt;em&gt;AttributeError: 'Carro' object has no attribute '__precio,&lt;/em&gt;&lt;/strong&gt; El cual básicamente nos dice que no existe ese atributo, eso debido a que es PRIVADO 😎.&lt;/p&gt;

&lt;p&gt;🎉 ¡Muchas felicidades acabas de aplicar el primer pilar de la programación orientada a objetos, el encapsulamiento!&lt;/p&gt;

&lt;p&gt;En nuestro próximo artículo aprenderemos sobre la &lt;strong&gt;herencia con Python.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🤓 Reto
&lt;/h2&gt;

&lt;p&gt;Crea tu propia clase del tema que prefieras, con sus respectivos atributos privados e incluso en otro lenguaje de programación y déjalo en comentarios.&lt;/p&gt;

</description>
      <category>python</category>
      <category>tutorial</category>
      <category>programming</category>
      <category>poo</category>
    </item>
    <item>
      <title>Introducción rápida a lo que es la Programación Orientada a Objetos y sus características</title>
      <dc:creator>Moises Ariza</dc:creator>
      <pubDate>Fri, 04 Nov 2022 15:49:00 +0000</pubDate>
      <link>https://dev.to/arizamoisesco/introduccion-rapida-a-lo-que-es-la-programacion-orientada-a-objetos-y-sus-caracteristicas-4b9</link>
      <guid>https://dev.to/arizamoisesco/introduccion-rapida-a-lo-que-es-la-programacion-orientada-a-objetos-y-sus-caracteristicas-4b9</guid>
      <description>&lt;p&gt;Actualmente, muchos los lenguajes cuentan con soporte para la Programación Orientada a Objetos y siendo uno de los paradigmas más utilizado, este se encuentra guiado por 4 pilares.&lt;/p&gt;

&lt;p&gt;Vamos a conocerlos y comprenderlos con ejemplos sencillos.&lt;br&gt;
Pero Primero, ¿Qué es un paradigma?&lt;br&gt;
Es una forma para resolver problemas comunes en programación. Imagínalo como una receta para poder preparar tu comida (tu código).&lt;/p&gt;

&lt;p&gt;Teniendo claro esto, en la Programación Orientada a Objetos (POO) los ingredientes son el código que vas a escribir y sus herramientas, estos los vamos a identificar como clases, atributos, métodos y, el protagonista principal, objetos.&lt;br&gt;
¿Entonces esos son los pilares? No, pero para comprender a los pilares debemos entender primero las partes que conforman a la POO, entonces calma y continuemos:&lt;/p&gt;

&lt;h2&gt;
  
  
  Clases
&lt;/h2&gt;

&lt;p&gt;Las clases son la plantilla con el que construimos los objetos. Este molde cuenta tanto con características como con acciones que podrá realizar el objeto tan pronto exista. Imagina el molde con el que puedes crear galletas.&lt;/p&gt;

&lt;h2&gt;
  
  
  Atributos
&lt;/h2&gt;

&lt;p&gt;Los atributos son las características que tiene la clase u objeto. Siguiendo el ejemplo de las galletas sería el tamaño, color, olor u sabor.&lt;/p&gt;

&lt;h2&gt;
  
  
  Métodos
&lt;/h2&gt;

&lt;p&gt;Los métodos son las acciones que los objetos pueden efectuar. Cómo es preocupante pensar en galletas que se muevan, mejor imagina un pez, sus métodos serian nadar o comer.&lt;/p&gt;

&lt;h2&gt;
  
  
  Objetos
&lt;/h2&gt;

&lt;p&gt;Cuando usas una plantilla (la clase) y volviendo a la analogía del pez, creas uno, como por ejemplo un pez payaso, entonces ya estás ante un objeto que ya tiene una identidad más especifica, con sus propias características (atributos y métodos) y que puedes aprovechar de diversas maneras.&lt;br&gt;
Bueno, entendiendo lo anterior ya estamos listo para los 4 pilares de la POO. Los cuales son:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Encapsulamiento&lt;/li&gt;
&lt;li&gt;Abstracción&lt;/li&gt;
&lt;li&gt;Herencia&lt;/li&gt;
&lt;li&gt;Polimorfismo&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;¿Qué quiere decir todo esto y cómo lo podemos asociar? A continuación lo descubriremos.&lt;/p&gt;

&lt;h2&gt;
  
  
  💊 Pilar del encapsulamiento
&lt;/h2&gt;

&lt;p&gt;Básicamente, significa que hay atributos y métodos de una clase a los cuales no se tiene acceso ni se puede editar desde afuera de la clase.&lt;br&gt;
Imagina la caja fuerte (la clase) de un banco en donde se busca proteger el dinero (atributos), solo personal autorizado puede ingresar para revisar o sacar sumas de dinero específicas, pero nadie debería alterar el funcionamiento de la caja fuerte.&lt;/p&gt;

&lt;h2&gt;
  
  
  🧰 Pilar de la abstracción
&lt;/h2&gt;

&lt;p&gt;Aquí se busca ocultar la complejidad que una clase pueda tener para así concentrarse en las funcionalidades que son “fáciles de usar”.&lt;br&gt;
Piensa en una TV que es un dispositivo complejo, ¿imaginas que para pasar un canal te tocara saber como funciona cada circuito? Pues se nos da un control remoto como interfaz que nos abstrae de esa complejidad y nos permite controlarlo con unos cuantos botones.&lt;/p&gt;

&lt;h2&gt;
  
  
  👨 👦 👦Pilar de la herencia
&lt;/h2&gt;

&lt;p&gt;Es un proceso que crea una clase hija que hereda de una clase padre. Esto le permite compartir sus métodos y atributos. Incluso se puede sobreescribir o definir nuevos.&lt;br&gt;
Este es fácil de asociar, tú cuentas con características físicas heredadas de tus padres como el color de ojos, cabello, piel, etc. Pero dependiendo de tu personalidad tendrás un estilo diferente o pensamiento diferentes (sobrescritura de atributos y métodos).&lt;/p&gt;

&lt;h2&gt;
  
  
  🥷Pilar del polimorfismo
&lt;/h2&gt;

&lt;p&gt;Los objetos que nazcan de clases que tengan herencia en común tiene la habilidad de cambiar su forma o sus tipos según se les necesite.&lt;br&gt;
Volvamos a la comida, un huevo tiene una estructura simple, pero puede ser preparado de diversas formas, revuelto, tibio, estrellado, etc. Todos estos platillos son diferentes, pero tienen un mismo origen, el huevo (herencia común).&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Ahora con estos conocimientos teóricos ya estás listo para probar todo esto en código real, pero lo haremos en una próxima publicación. 😉&lt;/em&gt;&lt;/p&gt;

</description>
      <category>programming</category>
      <category>poo</category>
      <category>beginners</category>
      <category>codenewbie</category>
    </item>
  </channel>
</rss>
