<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>POO archivos - Frexus</title>
	<atom:link href="https://www.frexus.dev/tag/poo/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.frexus.dev/tag/poo/</link>
	<description>Generando Valor Agreado</description>
	<lastBuildDate>Sat, 13 Sep 2025 18:23:40 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://www.frexus.dev/wp-content/uploads/2024/03/cropped-Captura-de-Pantalla-2022-12-26-a-las-15.52.42-32x32.png</url>
	<title>POO archivos - Frexus</title>
	<link>https://www.frexus.dev/tag/poo/</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">215529362</site>	<item>
		<title>Lenguajes de Programación Orientados a Objetos: Características, Ventajas y Desventajas</title>
		<link>https://www.frexus.dev/post/lenguajes-programacion-orientados-objetos/</link>
					<comments>https://www.frexus.dev/post/lenguajes-programacion-orientados-objetos/#respond</comments>
		
		<dc:creator><![CDATA[Alfredo de Jesús Gutiérrez]]></dc:creator>
		<pubDate>Sat, 13 Sep 2025 18:23:38 +0000</pubDate>
				<category><![CDATA[post]]></category>
		<category><![CDATA[clases y objetos]]></category>
		<category><![CDATA[encapsulamiento]]></category>
		<category><![CDATA[herencia]]></category>
		<category><![CDATA[lenguajes de programación]]></category>
		<category><![CDATA[Polimorfismo]]></category>
		<category><![CDATA[POO]]></category>
		<category><![CDATA[Programación Orientada a Objetos]]></category>
		<category><![CDATA[ventajas de la POO]]></category>
		<guid isPermaLink="false">https://www.frexus.dev/?p=4091</guid>

					<description><![CDATA[<p>En el mundo del desarrollo de software, los lenguajes de programación orientados a objetos (POO) se han convertido en un pilar fundamental. Este paradigma no solo organiza el código en unidades más claras y manejables, sino que también permite enfrentar proyectos complejos con mayor eficacia. Sin embargo, como todo enfoque, cuenta con ventajas y desventajas que deben conocerse antes de aplicarlo en proyectos reales. Objetivo de Aprendizaje Al finalizar esta lectura, el estudiante será capaz de identificar las principales características, ventajas y desventajas de la programación orientada a objetos, así como reflexionar sobre su aplicación práctica en el desarrollo de software. Características de los Lenguajes Orientados a Objetos Ventajas Desventajas Actividades Para consolidar tu aprendizaje sobre este tema, te invitamos a realizar las siguientes actividades:</p>
<p>La entrada <a href="https://www.frexus.dev/post/lenguajes-programacion-orientados-objetos/">Lenguajes de Programación Orientados a Objetos: Características, Ventajas y Desventajas</a> se publicó primero en <a href="https://www.frexus.dev">Frexus</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="wp-block-image">
<figure class="aligncenter size-large is-resized"><img fetchpriority="high" decoding="async" width="1024" height="683" src="https://www.frexus.dev/wp-content/uploads/2025/09/Poo-1024x683.png" alt="Lenguajes de programacion Oreintado a Objetos" class="wp-image-4092" style="width:531px;height:auto" srcset="https://www.frexus.dev/wp-content/uploads/2025/09/Poo-1024x683.png 1024w, https://www.frexus.dev/wp-content/uploads/2025/09/Poo-300x200.png 300w, https://www.frexus.dev/wp-content/uploads/2025/09/Poo-768x512.png 768w, https://www.frexus.dev/wp-content/uploads/2025/09/Poo-1140x760.png 1140w, https://www.frexus.dev/wp-content/uploads/2025/09/Poo.png 1536w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p>En el mundo del desarrollo de software, los <strong>lenguajes de programación orientados a objetos (POO)</strong> se han convertido en un pilar fundamental. Este paradigma no solo organiza el código en unidades más claras y manejables, sino que también permite enfrentar proyectos complejos con mayor eficacia. Sin embargo, como todo enfoque, cuenta con <strong>ventajas y desventajas</strong> que deben conocerse antes de aplicarlo en proyectos reales.</p>



<h2 class="wp-block-heading">Objetivo de Aprendizaje</h2>



<p>Al finalizar esta lectura, el estudiante será capaz de <strong>identificar las principales características, ventajas y desventajas de la programación orientada a objetos</strong>, así como reflexionar sobre su aplicación práctica en el desarrollo de software.</p>



<h2 class="wp-block-heading">Características de los Lenguajes Orientados a Objetos</h2>



<ol class="wp-block-list">
<li><strong>Clases y objetos</strong>: los moldes y sus instancias.</li>



<li><strong>Encapsulamiento</strong>: protección de datos internos.</li>



<li><strong>Herencia</strong>: reutilización de código y jerarquías.</li>



<li><strong>Polimorfismo</strong>: flexibilidad en la ejecución de métodos.</li>



<li><strong>Abstracción</strong>: representación simplificada de conceptos complejos.</li>
</ol>



<h2 class="wp-block-heading">Ventajas</h2>



<ul class="wp-block-list">
<li>Favorece la <strong>modularidad</strong> y la organización del código.</li>



<li>Permite <strong>reutilizar componentes</strong> a través de la herencia.</li>



<li>Mejora la <strong>colaboración en equipo</strong> gracias a la claridad estructural.</li>



<li>Facilita la <strong>escalabilidad</strong> de proyectos grandes.</li>
</ul>



<h2 class="wp-block-heading">Desventajas</h2>



<ul class="wp-block-list">
<li>Requiere <strong>tiempo adicional en diseño inicial</strong>.</li>



<li>Puede ser más complejo de aprender que otros paradigmas.</li>



<li>No siempre es la mejor opción para programas pequeños o simples.</li>
</ul>



<h2 class="wp-block-heading">Actividades</h2>



<p>Para consolidar tu aprendizaje sobre este tema, te invitamos a realizar las siguientes actividades:</p>



<ul class="wp-block-list">
<li><strong><a href="https://mirror.xyz/0xC0aA599b2bC4f72854E056b6E9A809764371ff3a/Kj6NTrRZOtybKRptU9WnpzjO4vgJMP64cJei2prcyoA?referrerAddress=0xC0aA599b2bC4f72854E056b6E9A809764371ff3a" target="_blank" rel="noreferrer noopener">Lectura</a> o <a href="https://youtu.be/DpNjYefvxpk" target="_blank" rel="noreferrer noopener">escucha</a> el caso de estudio</strong>: descubre la historia de Sofía y cómo aprendió a aplicar la POO. Después de leer o escuchar el caso de estudio responde las siguientes cuestiones: 
<ul class="wp-block-list">
<li>¿Qué características de la POO te parecen más útiles en proyectos reales y por qué?</li>



<li>¿Cómo equilibrar las ventajas de la POO frente a la inversión inicial de tiempo en diseño?</li>



<li>¿En qué casos la programación estructurada podría ser más eficiente que la orientada a objetos?</li>



<li>¿Cómo influye el polimorfismo en la flexibilidad y escalabilidad de un proyecto?</li>



<li>¿Qué impacto tiene la herencia en la reutilización de código y qué riesgos implica?</li>



<li>¿Qué paralelismos encuentras entre la POO y la organización de problemas en tu vida personal o profesional?</li>
</ul>
</li>



<li><strong><a href="https://mirror.xyz/0xC0aA599b2bC4f72854E056b6E9A809764371ff3a/wyFPd4sEag80IyzM8o69cDVHs3qSZKiu0IzA4J6FQ7k?referrerAddress=0xC0aA599b2bC4f72854E056b6E9A809764371ff3a" target="_blank" rel="noreferrer noopener">Actividad práctica</a></strong>: aplica lo aprendido creando un ejemplo de clases, herencia y polimorfismo.</li>



<li><strong>Actividades de reforzamiento</strong>: resuelve la <strong><a href="https://www.frexus.dev/sopa_letra/solver.html?gridSize=20&amp;words=CLASES%2COBJETOS%2CM%C3%89TODOS%2CPOLIMORFISMO%2CHERENCIA%2CENCAPSULAMIENTO%2CABSTRACCI%C3%93N%2CMODULARIDAD%2CREUTILIZACI%C3%93N&amp;directions=horizontal&amp;title=Lenguajes+Visuales&amp;subtitle=Lenguajes+de+programaci%C3%B3n+orientado+a+objetos" target="_blank" rel="noreferrer noopener">sopa de letras</a></strong> y el <strong><a href="https://www.frexus.dev/crucigrama/crucigrama.html?data=%7B%22id%22%3A%22cw-chdz8clad%22%2C%22title%22%3A%22Lenguajes%20Visuales%22%2C%22subtitle%22%3A%22Lenguajes%20de%20programaci%C3%B3n%22%2C%22words%22%3A%5B%7B%22word%22%3A%22LENGUAJEOO%22%2C%22clue%22%3A%22Paradigma%20de%20programaci%C3%B3n%20basado%20en%20clases%2C%20atributos%2C%20m%C3%A9todos%2C%20herencia%20y%20polimorfismo.%22%7D%2C%7B%22word%22%3A%22JAVA%22%2C%22clue%22%3A%22Lenguaje%20multiplataforma%20muy%20usado%20en%20aplicaciones%20empresariales%2C%20m%C3%B3viles%20y%20de%20servidor.%22%7D%2C%7B%22word%22%3A%22SMALLTALK%22%2C%22clue%22%3A%22Lenguaje%20pionero%20en%20POO%2C%20creado%20en%20los%20a%C3%B1os%2070%2C%20con%20gran%20influencia%20en%20otros%20lenguajes.%22%7D%2C%7B%22word%22%3A%22VENTAJAS%22%2C%22clue%22%3A%22Beneficios%20o%20puntos%20fuertes%20de%20un%20paradigma%20o%20tecnolog%C3%ADa%2C%20como%20la%20reutilizaci%C3%B3n%20o%20escalabilidad.%22%7D%2C%7B%22word%22%3A%22DESVENTAJAS%22%2C%22clue%22%3A%22Limitaciones%20o%20aspectos%20negativos%2C%20como%20mayor%20complejidad%20inicial%20en%20la%20POO.%22%7D%2C%7B%22word%22%3A%22ENTRADA%22%2C%22clue%22%3A%22Instrucci%C3%B3n%20que%20permite%20recibir%20datos%20del%20usuario%20hacia%20el%20programa.%22%7D%2C%7B%22word%22%3A%22SALIDA%22%2C%22clue%22%3A%22Instrucci%C3%B3n%20que%20muestra%20informaci%C3%B3n%20del%20programa%20hacia%20el%20usuario.%22%7D%2C%7B%22word%22%3A%22ASIGNACI%C3%93N%22%2C%22clue%22%3A%22Acci%C3%B3n%20de%20dar%20un%20valor%20a%20una%20variable%20en%20programaci%C3%B3n.%22%7D%2C%7B%22word%22%3A%22COMUNICACI%C3%93NENTREOBJETOS%22%2C%22clue%22%3A%22Proceso%20mediante%20el%20cual%20los%20objetos%20interact%C3%BAan%20enviando%20mensajes%20o%20llamando%20m%C3%A9todos.%22%7D%5D%2C%22createdAt%22%3A%222025-09-13T17%3A42%3A28.193Z%22%7D">crucigrama</a></strong> diseñados para afianzar conceptos clave.</li>
</ul>



<p></p>
<p>La entrada <a href="https://www.frexus.dev/post/lenguajes-programacion-orientados-objetos/">Lenguajes de Programación Orientados a Objetos: Características, Ventajas y Desventajas</a> se publicó primero en <a href="https://www.frexus.dev">Frexus</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.frexus.dev/post/lenguajes-programacion-orientados-objetos/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">4091</post-id>	</item>
		<item>
		<title>Herencia</title>
		<link>https://www.frexus.dev/articulo/herencia/</link>
					<comments>https://www.frexus.dev/articulo/herencia/#respond</comments>
		
		<dc:creator><![CDATA[Alfredo de Jesús Gutiérrez]]></dc:creator>
		<pubDate>Wed, 14 Jun 2023 10:53:03 +0000</pubDate>
				<category><![CDATA[articulo]]></category>
		<category><![CDATA[herencia]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[POO]]></category>
		<category><![CDATA[programación orientaa a objetos]]></category>
		<guid isPermaLink="false">https://www.frexus.dev/?p=1833</guid>

					<description><![CDATA[<p>La herencia es uno de los conceptos fundamentales en la programación orientada a objetos (POO). Permite la creación de jerarquías de clases, donde una clase derivada (subclase) hereda atributos y comportamientos de una clase base (superclase). La subclase puede extender la funcionalidad de la superclase agregando nuevos atributos y métodos, o sobrescribiendo los existentes. Características Se tiene varias características que ayudan a organizar y reutilizar el código. A continuación, se presentan algunas que se consideran clave en la herencia: Estas son algunas de las características principales de la herencia en la programación orientada a objetos. La herencia es un concepto poderoso que ayuda a mejorar la modularidad, reutilización y flexibilidad del código. Ejemplo En este ejemplo, la clase Vehiculo es la superclase, y la clase Automovil es la subclase que hereda de Vehiculo utilizando la palabra clave extends. La subclase Automovil tiene su propio atributo numPuertas y método abrirPuertas(), además de heredar el atributo marca y método conducir() de la superclase. En el método Auto(), creamos un objeto miAuto de la clase Automovil y podemos acceder tanto a los métodos y atributos heredados de la superclase, como a los específicos de la subclase. Es importante mencionar que en Java, una clase solo puede heredar de una única superclase, es decir, no se admite la herencia múltiple directa. Sin embargo, se puede lograr cierto grado de herencia múltiple a través de interfaces en Java. En el vídeo 1, se muestra la ejecución del código que ejemplifica la herencia, Espero que este post te ayude a comprender mejor el concepto de herencia en Java.</p>
<p>La entrada <a href="https://www.frexus.dev/articulo/herencia/">Herencia</a> se publicó primero en <a href="https://www.frexus.dev">Frexus</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>La herencia es uno de los conceptos fundamentales en la programación orientada a objetos (POO). Permite la creación de jerarquías de clases, donde una clase derivada (subclase) hereda atributos y comportamientos de una clase base (superclase). La subclase puede extender la funcionalidad de la superclase agregando nuevos atributos y métodos, o sobrescribiendo los existentes.</p>



<h2 class="wp-block-heading">Características</h2>



<p>Se tiene varias características que ayudan a organizar y reutilizar el código. A continuación, se presentan algunas que se consideran clave en la herencia:</p>



<ol class="wp-block-list">
<li><strong>Reutilización de código</strong>: Permite compartir y reutilizar código entre clases relacionadas. Una subclase hereda los atributos y métodos de su superclase, lo que evita que volver a escribir el mismo código en múltiples lugares.</li>



<li><strong>Relaciones jerárquicas</strong>: Crea una jerarquía de clases, donde las subclases se especializan y amplían la funcionalidad de la superclase. Esto ayuda a organizar las clases en una estructura lógica y coherente.</li>



<li><strong>Extensibilidad</strong>: Las subclases pueden agregar nuevos atributos y métodos específicos, además de los heredados de la superclase. Esto permite extender y personalizar el comportamiento de la superclase según las necesidades de la subclase.</li>



<li><strong>Polimorfismo</strong>: Facilita el <a href="https://www.frexus.dev/articulo/polimorfismo/">polimorfismo</a>, que es la capacidad de tratar objetos de diferentes clases derivadas de una superclase de manera uniforme. Esto permite escribir código genérico que puede funcionar con objetos de diferentes tipos, siempre que hereden de la misma superclase.</li>



<li><strong>Especialización y generalización</strong>: Permite la especialización, donde las subclases pueden agregar características específicas adicionales a la superclase. También genera la generalización, donde se pueden agrupar objetos de diferentes subclases bajo la superclase común.</li>



<li><strong>Herencia de interfaces</strong>: Además de heredar de clases, Java también permite la implementación de interfaces, lo que proporciona una forma de lograr <strong>herencia múltiple virtual</strong>. Una clase puede implementar múltiples interfaces, lo que permite heredar múltiples comportamientos sin la restricción de herencia única de clases.</li>
</ol>



<p>Estas son algunas de las características principales de la herencia en la programación orientada a objetos. La herencia es un concepto poderoso que ayuda a mejorar la modularidad, reutilización y flexibilidad del código.</p>



<h2 class="wp-block-heading">Ejemplo</h2>



<pre class="EnlighterJSRAW" data-enlighter-language="java" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">// Clase base (superclase)
class Vehiculo {
    protected String marca;

    public void conducir() {
        System.out.println("Conduciendo un vehículo...");
    }
}

// Clase derivada (subclase)
class Automovil extends Vehiculo {
    private int numPuertas;

    public void abrirPuertas() {
        System.out.println("Abriendo las puertas del automóvil...");
    }
}

// Clase principal
public class Auto {
    public static void main(String[] args) {
        Automovil miAuto = new Automovil();
        miAuto.marca = "Toyota";
        miAuto.conducir();
        miAuto.abrirPuertas();
    }
}
</pre>



<p>En este ejemplo, la clase <code>Vehiculo</code> es la superclase, y la clase <code>Automovil</code> es la subclase que hereda de <code>Vehiculo</code> utilizando la palabra clave <code>extends</code>. La subclase <code>Automovil</code> tiene su propio atributo <code>numPuertas</code> y método <code>abrirPuertas()</code>, además de heredar el atributo <code>marca</code> y método <code>conducir()</code> de la superclase.</p>



<p>En el método <code>Auto()</code>, creamos un objeto <code>miAuto</code> de la clase <code>Automovil</code> y podemos acceder tanto a los métodos y atributos heredados de la superclase, como a los específicos de la subclase.</p>



<p>Es importante mencionar que en Java, una clase solo puede heredar de una única superclase, es decir, no se admite la herencia múltiple directa. Sin embargo, se puede lograr cierto grado de herencia múltiple a través de interfaces en Java.</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-4-3 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe title="Herencia en java" width="960" height="720" src="https://www.youtube.com/embed/3HVAb3_CiHg?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
</div><figcaption class="wp-element-caption">Vídeo 1. Ejecución de código de ejemplo de herencia en java. Fuente: youtube.com</figcaption></figure>



<p>En el vídeo 1, se muestra la ejecución del código que ejemplifica la herencia,  Espero que este post te ayude a comprender mejor el concepto de herencia en Java.</p>
<p>La entrada <a href="https://www.frexus.dev/articulo/herencia/">Herencia</a> se publicó primero en <a href="https://www.frexus.dev">Frexus</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.frexus.dev/articulo/herencia/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1833</post-id>	</item>
		<item>
		<title>Polimorfismo</title>
		<link>https://www.frexus.dev/articulo/polimorfismo/</link>
					<comments>https://www.frexus.dev/articulo/polimorfismo/#respond</comments>
		
		<dc:creator><![CDATA[Alfredo de Jesús Gutiérrez]]></dc:creator>
		<pubDate>Tue, 13 Jun 2023 00:19:30 +0000</pubDate>
				<category><![CDATA[articulo]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[Polimorfismo]]></category>
		<category><![CDATA[POO]]></category>
		<guid isPermaLink="false">https://www.frexus.dev/?p=1827</guid>

					<description><![CDATA[<p>El polimorfismo es un concepto fundamental en la programación orientada a objetos que permite que un objeto de una clase pueda ser tratado como un objeto de su clase base o de una de sus clases derivadas. El término &#8220;polimorfismo&#8221; proviene de las palabras griegas &#8220;poly&#8221; (muchos) y &#8220;morphos&#8221; (formas), lo que significa &#8220;muchas formas&#8220;. En la programación orientada a objetos, el polimorfismo permite que un objeto pueda comportarse de diferentes maneras según el contexto en el que se utiliza. Por lo que objeto de una clase puede ser tratado como un objeto de una clase relacionada, proporcionando flexibilidad y extensibilidad en el diseño del software. Características Los métodos polimórficos, son métodos declarados en una clase base y que pueden ser redefinidos en las clases derivadas. Cuando se invoca un método polimórfico a través de una referencia de la clase base, la implementación correcta del método se determina en tiempo de ejecución según el tipo real del objeto al que se hace referencia. Permite escribir código más genérico y flexible, ya que se pueden definir comportamientos comunes en la clase base y aprovechar las implementaciones específicas en las clases derivadas. Además, facilita la extensibilidad del código, ya que se pueden agregar nuevas clases derivadas sin modificar el código existente que trabaja con la clase base. Ejemplos En este ejemplo, tenemos una clase base llamada Animal que tiene un método hacerSonido() que muestra un mensaje genérico de que el animal hace un sonido. Luego, tenemos dos clases derivadas: Perro y Gato. Estas clases heredan de la clase Animal y redefinen el método hacerSonido() para mostrar mensajes específicos de cada tipo de animal. En el método PolimorfismoAnimal(), creamos dos objetos: animal1 de tipo Perro y animal2 de tipo Gato. Aunque declaramos las referencias como tipo Animal, los objetos reales son instancias de las clases derivadas. Cuando llamamos al método hacerSonido() en animal1 y animal2, el comportamiento polimórfico entra en juego. La llamada al método se resuelve en tiempo de ejecución y se utiliza la implementación específica de cada clase derivada. Esto significa que el mensaje mostrado será &#8220;El perro ladra&#8221; para animal1 y &#8220;El gato maulla&#8221; para animal2. Otro Ejemplo En este ejemplo, la clase base Figura tiene un método calcularArea() que devuelve un valor predeterminado de 0.0. Las clases derivadas Cuadrado y Círculo heredan de la clase base y sobrescriben el método calcularArea() con sus propias implementaciones. En el método PolimorfismoArea(), Se crean dos objetos cuadrado y circulo de tipo Figura, pero utilizando las clases derivadas Cuadrado y Circulo. Cuando llamamos al método calcularArea() en estos objetos, el polimorfismo entra en juego y se ejecuta la implementación específica de cada clase derivada. No se debe olvidar que @Override permite indicar que un método de una clase está sobrescribiendo (override) un método de su clase base (superclase) o interfaz; es opcional, pero se recomienda su uso por las siguientes razones: En el vídeo 1. se puede apreciar la ejecución de los dos códigos expuesto en este post. Espero que este post ayude a comprender mejor el concepto de polimorfismo en java.</p>
<p>La entrada <a href="https://www.frexus.dev/articulo/polimorfismo/">Polimorfismo</a> se publicó primero en <a href="https://www.frexus.dev">Frexus</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>El polimorfismo es un concepto fundamental en la programación orientada a objetos que permite que un objeto de una clase pueda ser tratado como un objeto de su clase base o de una de sus clases derivadas. El término &#8220;<strong>polimorfismo</strong>&#8221; proviene de las palabras griegas &#8220;<strong>poly</strong>&#8221; (<strong>muchos</strong>) y &#8220;<strong>morphos</strong>&#8221; (<strong>formas</strong>), lo que significa &#8220;<strong>muchas</strong> <strong>formas</strong>&#8220;.</p>



<p>En la programación orientada a objetos, el polimorfismo permite que un objeto pueda comportarse de diferentes maneras según el contexto en el que se utiliza. Por lo que objeto de una clase puede ser tratado como un objeto de una clase relacionada, proporcionando flexibilidad y extensibilidad en el diseño del software.</p>



<h2 class="wp-block-heading">Características</h2>



<ol class="wp-block-list">
<li><strong><a href="https://www.frexus.dev/articulo/herencia/">Herencia</a></strong>: Una clase derivada hereda los atributos y métodos de su clase base y puede agregar nuevos miembros o redefinir los existentes.</li>



<li><strong>Sustitución</strong>:  Se establece que un objeto de una clase derivada puede ser utilizado donde se espera un objeto de su clase base. Esto se debe a que el objeto derivado comparte la misma interfaz o supertipo que el objeto base.</li>
</ol>



<p>Los métodos polimórficos, son métodos declarados en una clase base y que pueden ser redefinidos en las clases derivadas. Cuando se invoca un método polimórfico a través de una referencia de la clase base, la implementación correcta del método se determina en tiempo de ejecución según el tipo real del objeto al que se hace referencia.</p>



<p>Permite escribir código más genérico y flexible, ya que se pueden definir comportamientos comunes en la clase base y aprovechar las implementaciones específicas en las clases derivadas. Además, facilita la extensibilidad del código, ya que se pueden agregar nuevas clases derivadas sin modificar el código existente que trabaja con la clase base.</p>



<h2 class="wp-block-heading">Ejemplos</h2>



<pre class="EnlighterJSRAW" data-enlighter-language="java" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">// Clase base (superclase)
class Animal {
    public void hacerSonido() {
        System.out.println("El animal hace un sonido.");
    }
}

// Clases derivadas (subclases)
class Perro extends Animal {
    public void hacerSonido() {
        System.out.println("El perro ladra.");
    }
}

class Gato extends Animal {
    public void hacerSonido() {
        System.out.println("El gato maulla.");
    }
}

// Clase principal
public class Polimorfismo {
    public static void main(String[] args) {
        Animal animal1 = new Perro(); // Crear un objeto Perro y asignarlo a una referencia Animal
        Animal animal2 = new Gato();  // Crear un objeto Gato y asignarlo a una referencia Animal

        animal1.hacerSonido(); // Llamar al método hacerSonido() del objeto Perro
        animal2.hacerSonido(); // Llamar al método hacerSonido() del objeto Gato
    }
}
</pre>



<p>En este ejemplo, tenemos una clase base llamada <code>Animal</code> que tiene un método <code>hacerSonido()</code> que muestra un mensaje genérico de que el animal hace un sonido.</p>



<p>Luego, tenemos dos clases derivadas: <code>Perro</code> y <code>Gato</code>. Estas clases heredan de la clase <code>Animal</code> y redefinen el método <code>hacerSonido()</code> para mostrar mensajes específicos de cada tipo de animal.</p>



<p>En el método <code>PolimorfismoAnimal()</code>, creamos dos objetos: <code>animal1</code> de tipo <code>Perro</code> y <code>animal2</code> de tipo <code>Gato</code>. Aunque declaramos las referencias como tipo <code>Animal</code>, los objetos reales son instancias de las clases derivadas.</p>



<p>Cuando llamamos al método <code>hacerSonido()</code> en <code>animal1</code> y <code>animal2</code>, el comportamiento polimórfico entra en juego. La llamada al método se resuelve en tiempo de ejecución y se utiliza la implementación específica de cada clase derivada. Esto significa que el mensaje mostrado será &#8220;El perro ladra&#8221; para <code>animal1</code> y &#8220;El gato maulla&#8221; para <code>animal2</code>.</p>



<h2 class="wp-block-heading">Otro Ejemplo</h2>



<pre class="EnlighterJSRAW" data-enlighter-language="java" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">// Clase base (superclase)
class Figura {
    public double calcularArea() {
        return 0.0;
    }
}

// Clase derivada Cuadrado
class Cuadrado extends Figura {
    private double lado;

    public Cuadrado(double lado) {
        this.lado = lado;
    }

    @Override
    public double calcularArea() {
        return lado * lado;
    }
}

// Clase derivada Círculo
class Circulo extends Figura {
    private double radio;

    public Circulo(double radio) {
        this.radio = radio;
    }

    @Override
    public double calcularArea() {
        return Math.PI * radio * radio;
    }
}

// Clase principal
public class PolimorfismoArea {
    public static void main(String[] args) {
        Figura cuadrado = new Cuadrado(5.0); // Crear un objeto Cuadrado
        Figura circulo = new Circulo(3.0);   // Crear un objeto Círculo

        // Calcular y mostrar el área del cuadrado
        System.out.println("Área del cuadrado: " + cuadrado.calcularArea());

        // Calcular y mostrar el área del círculo
        System.out.println("Área del círculo: " + circulo.calcularArea());
    }
}
</pre>



<p>En este ejemplo, la clase base <code>Figura</code> tiene un método <code>calcularArea()</code> que devuelve un valor predeterminado de 0.0. Las clases derivadas <code>Cuadrado</code> y <code>Círculo</code> heredan de la clase base y sobrescriben el método <code>calcularArea()</code> con sus propias implementaciones.</p>



<p>En el método <code>PolimorfismoArea()</code>,  Se crean dos objetos <code>cuadrado</code> y <code>circulo</code> de tipo <code>Figura</code>, pero utilizando las clases derivadas <code>Cuadrado</code> y <code>Circulo</code>. Cuando llamamos al método <code>calcularArea()</code> en estos objetos, el polimorfismo entra en juego y se ejecuta la implementación específica de cada clase derivada.</p>



<p>No se debe olvidar que <code data-enlighter-language="java" class="EnlighterJSRAW">@Override</code> permite indicar que un método de una clase está sobrescribiendo (override) un método de su clase base (superclase) o interfaz; es opcional, pero se recomienda su uso por las siguientes razones:</p>



<ol class="wp-block-list">
<li><strong>Verificación de errores</strong>: Ayuda al compilador a verificar si el método realmente está sobrescribiendo un método existente en la clase base o interfaz. Si no está sobrescribiendo ningún método válido, el compilador generará un error de compilación.</li>



<li><strong>Legibilidad</strong>: Queda claro para los desarrolladores que el método en la clase derivada está diseñado para reemplazar o sobrescribir el comportamiento del método en la clase base o interfaz.</li>



<li><strong>Mantenimiento</strong>: Si en algún momento se realiza una modificación en la clase base o interfaz que afecte a los métodos que se están sobrescribiendo, el compilador generará un error si se olvida actualizar el método correspondiente en la clase derivada. Ayudando a evitar errores sutiles y el código actualizado.</li>
</ol>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-4-3 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe title="Polimorfismo en java" width="960" height="720" src="https://www.youtube.com/embed/9ggHILzhkPs?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
</div><figcaption class="wp-element-caption">Vídeo 1. Muestra la ejecución de los códigos expuestos en esta entrada. Fuente: Youtube.com</figcaption></figure>



<p>En el vídeo 1. se puede apreciar la ejecución de los dos códigos expuesto en este post. Espero que este post ayude a comprender mejor el concepto de polimorfismo en java.</p>
<p>La entrada <a href="https://www.frexus.dev/articulo/polimorfismo/">Polimorfismo</a> se publicó primero en <a href="https://www.frexus.dev">Frexus</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.frexus.dev/articulo/polimorfismo/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1827</post-id>	</item>
		<item>
		<title>Instalar Java</title>
		<link>https://www.frexus.dev/articulo/instalar-java/</link>
					<comments>https://www.frexus.dev/articulo/instalar-java/#respond</comments>
		
		<dc:creator><![CDATA[Alfredo de Jesús Gutiérrez]]></dc:creator>
		<pubDate>Sun, 21 May 2023 13:30:21 +0000</pubDate>
				<category><![CDATA[articulo]]></category>
		<category><![CDATA[instalar]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[POO]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Programación Orientada a Objetos]]></category>
		<guid isPermaLink="false">https://www.frexus.dev/?p=1744</guid>

					<description><![CDATA[<p>Ahora toca el turno de hacer un post en donde se describa como debe de instalarse java, que si lo que se requiere es instalar el kit de desarrollo (JDK, por sus siglas en ingles), para crear aplicaciones y programas o solo la maquina virtual (JMV, por sus siglas en ingles), que permite ejecutar los programas creados con el JDK. Pasos para instalar el JDK Son las diferentes opciones que se tienen para instalar el JDK de java en los distintos sistemas operativos que se encuentran disponibles, distribuciones Gnu-Linux, versiones de windows, y MacOs.</p>
<p>La entrada <a href="https://www.frexus.dev/articulo/instalar-java/">Instalar Java</a> se publicó primero en <a href="https://www.frexus.dev">Frexus</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Ahora toca el turno de hacer un post en donde se describa como debe de instalarse java, que si lo que se requiere es instalar el kit de desarrollo (JDK, por sus siglas en ingles), para crear aplicaciones y programas o solo la maquina virtual (JMV, por sus siglas en ingles), que permite ejecutar los programas creados con el JDK.</p>



<h3 class="wp-block-heading">Pasos para instalar el JDK</h3>



<ul class="wp-block-list">
<li>Dirigirse a la pagina java.com</li>



<li>Pulsar sobre la opción Java SE development kit. debería de enviar a un sitio como este: https://www.oracle.com/java/technologies/downloads/</li>



<li>Ya solo se debe de seleccionar el tipo de sistema operativo que se este usando, Linux, MacOs o Windows.</li>



<li>Después elegir la arquitectura del Sistema operativo si es de 64 o 32 bits o arm32 o arm64</li>



<li>Pulsar sobre el enlace de descarga y posteriormente hacer clic en el instalador y seguir el asistente.</li>
</ul>



<figure class="wp-block-embed is-type-rich is-provider-tumblr wp-block-embed-tumblr"><div class="wp-block-embed__wrapper">
<div class="tumblr-post" data-href="https://embed.tumblr.com/embed/post/t:d0KmrxJkElKB8EsGh2qW4w/718109536083427328/v2" data-did="e47c433db4d4f8308c71dcd9b40630196122cd18"  ><a href="https://www.tumblr.com/ajgutierr3z/718109536083427328/opciones-disponibles-para-instalar-java-jdk-en">https://www.tumblr.com/ajgutierr3z/718109536083427328/opciones-disponibles-para-instalar-java-jdk-en</a></div><script async src="https://assets.tumblr.com/post.js?_v=38df9a6ca7436e6ca1b851b0543b9f51"></script>
</div><figcaption class="wp-element-caption">Imagen 1. Opciones de descarga para instalar el JDK para windows. Fuente: tumblr.com</figcaption></figure>



<figure class="wp-block-embed is-type-rich is-provider-tumblr wp-block-embed-tumblr"><div class="wp-block-embed__wrapper">
<div class="tumblr-post" data-href="https://embed.tumblr.com/embed/post/t:d0KmrxJkElKB8EsGh2qW4w/718109489726881792/v2" data-did="f016350b1547665e7788ac8a5a34214d0d2ed23f"  ><a href="https://www.tumblr.com/ajgutierr3z/718109489726881792/opciones-disponibles-para-instalar-java-en">https://www.tumblr.com/ajgutierr3z/718109489726881792/opciones-disponibles-para-instalar-java-en</a></div><script async src="https://assets.tumblr.com/post.js?_v=38df9a6ca7436e6ca1b851b0543b9f51"></script>
</div><figcaption class="wp-element-caption">Imagen 2. Opciones de descarga de JDK para instalarlo en MacOs. Fuente: tumblr.com</figcaption></figure>



<figure class="wp-block-embed is-type-rich is-provider-tumblr wp-block-embed-tumblr"><div class="wp-block-embed__wrapper">
<div class="tumblr-post" data-href="https://embed.tumblr.com/embed/post/t:d0KmrxJkElKB8EsGh2qW4w/718109450865655808/v2" data-did="a6790e48efeb56785db7db7185b92456454d63d4"  ><a href="https://www.tumblr.com/ajgutierr3z/718109450865655808/opciones-disponibles-para-descargar-el-jdk-para">https://www.tumblr.com/ajgutierr3z/718109450865655808/opciones-disponibles-para-descargar-el-jdk-para</a></div><script async src="https://assets.tumblr.com/post.js?_v=38df9a6ca7436e6ca1b851b0543b9f51"></script>
</div><figcaption class="wp-element-caption">Imagen 3. Opciones de descarga del JDK, para instalarlo en sistemas GNU-Linux. Fuente: tumblr.com</figcaption></figure>



<p>Son las diferentes opciones que se tienen para instalar el JDK de java en los distintos sistemas operativos que se encuentran disponibles, distribuciones Gnu-Linux, versiones de windows, y MacOs.</p>
<p>La entrada <a href="https://www.frexus.dev/articulo/instalar-java/">Instalar Java</a> se publicó primero en <a href="https://www.frexus.dev">Frexus</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.frexus.dev/articulo/instalar-java/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1744</post-id>	</item>
		<item>
		<title>UML  y POO: Comprendiendo su Relación en el Desarrollo de Software</title>
		<link>https://www.frexus.dev/articulo/uml-y-poo/</link>
					<comments>https://www.frexus.dev/articulo/uml-y-poo/#respond</comments>
		
		<dc:creator><![CDATA[Alfredo de Jesús Gutiérrez]]></dc:creator>
		<pubDate>Fri, 29 Jan 2021 21:59:08 +0000</pubDate>
				<category><![CDATA[articulo]]></category>
		<category><![CDATA[#Programacion]]></category>
		<category><![CDATA[lenguaje]]></category>
		<category><![CDATA[Modelado]]></category>
		<category><![CDATA[Objetos]]></category>
		<category><![CDATA[Orientado]]></category>
		<category><![CDATA[POO]]></category>
		<category><![CDATA[UML]]></category>
		<category><![CDATA[Unificado]]></category>
		<guid isPermaLink="false">http://www.ajgutierrez.me/?p=259</guid>

					<description><![CDATA[<p>En el desarrollo de software, UML y la programación orientada a objetos (POO) son herramientas fundamentales. UML permite representar visualmente cómo está construido un sistema, mientras que POO ayuda a organizar el código en bloques reutilizables llamados objetos. El Lenguaje Unificado de modelado, es mas conocido y utilizado para el modelado de sistemas de software, está respaldado por el Object Management Group (OMG). Además de visualizar de forma gráfica, especificar, construir y documentar un sistema. UML ofrece un estándar para describir un &#8220;plano&#8221; del sistema (modelo), incluyendo aspectos conceptuales tales como procesos, funciones del sistema, y aspectos concretos como expresiones de lenguajes de programación, esquemas de bases de datos y compuestos reciclados. Es importante remarcar que UML es un &#8220;lenguaje de modelado&#8221; para especificar o para describir métodos o procesos. Se utiliza para definir un sistema, para detallar los artefactos en el sistema y para documentar y construir. En otras palabras, es el lenguaje en el que está descrito el modelo. UML no puede compararse con algún paradigma de programación.No es programar, solo se diagrama la realidad de utilizar en un requerimiento. El UML y la programación orientada a objetos viene siendo un complemento perfecto, pero no por eso es exclusivo de los lenguajes orientados a objetos. También es utilizado en diferentes áreas como se puede observar en la siguiente figura. Tipos de Diagramas UML. En la figura 1, se puede apreciar los diferentes diagramas que se pueden crear usando el lenguaje UML, para este caso se hará un énfasis en el diagrama de clases; son, sin duda, el tipo de diagrama UML más utilizado. Es el bloque de construcción principal de cualquier solución orientada a objetos; muestra las clases en un sistema, atributos y operaciones de cada clase y la relación entre cada clase. En la mayoría de las herramientas de modelado, una clase tiene tres partes, nombre en la parte superior, atributos en el centro y operaciones o métodos en la parte inferior. En sistemas grandes con muchas clases relacionadas, las clases se agrupan para crear diagramas de clases. Las diferentes relaciones entre las clases se muestran por diferentes tipos de flechas. ¿Qué es la Programación Orientada a Objetos (POO)? La POO es un paradigma de programación que utiliza &#8220;objetos&#8221; para representar datos y métodos que operan sobre esos datos. Los principios fundamentales de la POO incluyen:​ Estos principios permiten crear software modular, reutilizable y fácil de mantener.​ En la figura 2. Se pueden apreciar dos clases. La clase principal (también llamada clase padre o superclase) se llama &#8220;Monociclo&#8221;. Por otro lado, la clase secundaria (subclase o clase hija) lleva el nombre de &#8220;Bicicleta&#8221;. En el diagrama, se observan atributos, representados por los símbolos de suma o resta. También se incluyen funciones o métodos, que representan las acciones que el objeto puede realizar en el mundo real. Recuerda que un atributo es una característica propia del objeto que se está modelando. Es decir, elementos como &#8220;parrilla&#8221;, &#8220;un par de diablos&#8221; o &#8220;una canasta&#8221; no se consideran atributos de la bicicleta. Estos se clasifican como accesorios, no como características esenciales del objeto. No debemos olvidar que los atributos y métodos pueden ser privados o públicos. Los privados se representan con el símbolo de resta (–) y los públicos con el símbolo de suma (+). Integración de UML y POO La combinación de UML y POO es poderosa para el diseño de sistemas orientados a objetos. UML proporciona las herramientas necesarias para modelar los componentes y relaciones de un sistema basado en objetos. Por ejemplo, el diagrama de clases de UML representa las clases del sistema, así como sus atributos y métodos. También muestra las relaciones entre ellas. Este tipo de diagrama refleja directamente los conceptos fundamentales de la POO. Diagramas UML Relevantes para la POO Algunos de los diagramas UML más utilizados en el contexto de la POO incluyen:​ Estos diagramas ayudan a visualizar y planificar la estructura y comportamiento del sistema antes de la implementación.​​ Entender la relación entre UML y POO es esencial para cualquier desarrollador o diseñador de software. Usar UML en el contexto de la POO permite planificar mejor los sistemas. Además, mejora el diseño y la comunicación dentro del equipo. Como resultado, se obtienen soluciones más eficientes y fáciles de mantener. visita POO</p>
<p>La entrada <a href="https://www.frexus.dev/articulo/uml-y-poo/">UML  y POO: Comprendiendo su Relación en el Desarrollo de Software</a> se publicó primero en <a href="https://www.frexus.dev">Frexus</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="1880" height="1255" src="https://www.frexus.dev/wp-content/uploads/2021/01/pexels-photo-1181311.jpeg" alt="uml y la programación orientada a objetos" class="wp-image-3474" srcset="https://www.frexus.dev/wp-content/uploads/2021/01/pexels-photo-1181311.jpeg 1880w, https://www.frexus.dev/wp-content/uploads/2021/01/pexels-photo-1181311-300x200.jpeg 300w, https://www.frexus.dev/wp-content/uploads/2021/01/pexels-photo-1181311-1024x684.jpeg 1024w, https://www.frexus.dev/wp-content/uploads/2021/01/pexels-photo-1181311-768x513.jpeg 768w, https://www.frexus.dev/wp-content/uploads/2021/01/pexels-photo-1181311-1536x1025.jpeg 1536w" sizes="auto, (max-width: 1880px) 100vw, 1880px" /><figcaption class="wp-element-caption">Photo by Christina Morillo on <a href="https://www.pexels.com/photo/white-dry-erase-board-with-red-diagram-1181311/">Pexels.com</a></figcaption></figure>
</div>


<p>En el desarrollo de software, UML y la programación orientada a objetos (POO) son herramientas fundamentales. UML permite representar visualmente cómo está construido un sistema, mientras que POO ayuda a organizar el código en bloques reutilizables llamados objetos.</p>



<p>El Lenguaje Unificado de modelado, es mas conocido y utilizado para el modelado de sistemas de software, está respaldado por el Object Management Group (OMG). Además de visualizar de forma gráfica, especificar, construir y documentar un sistema. </p>



<p>UML ofrece un estándar para describir un &#8220;plano&#8221; del sistema (modelo), incluyendo aspectos conceptuales tales como procesos, funciones del sistema, y aspectos concretos como expresiones de lenguajes de programación, esquemas de bases de datos y compuestos reciclados.</p>



<p>Es importante remarcar que UML es un &#8220;<em>lenguaje de modelado</em>&#8221; para especificar o para describir métodos o procesos. Se utiliza para definir un sistema, para detallar los artefactos en el sistema y para documentar y construir. En otras palabras, es el lenguaje en el que está descrito el modelo. UML no puede compararse con algún paradigma de programación.No es programar, solo se diagrama la realidad de utilizar en un requerimiento. </p>



<p>El UML y la  programación orientada a objetos viene siendo un complemento perfecto, pero no por eso es exclusivo de los lenguajes orientados a objetos. También es utilizado en diferentes áreas como se puede observar en la siguiente figura.</p>



<h3 class="wp-block-heading">Tipos de Diagramas UML.</h3>



<figure class="wp-block-embed aligncenter is-type-rich is-provider-tumblr wp-block-embed-tumblr"><div class="wp-block-embed__wrapper">
<div class="tumblr-post" data-href="https://embed.tumblr.com/embed/post/t:d0KmrxJkElKB8EsGh2qW4w/641659720253440000/v2" data-did="b00be5c133e3a6e872398886cc2c00b3074e9356"  ><a href="https://www.tumblr.com/ajgutierr3z/641659720253440000/tipos-de-diagramas-uml">https://www.tumblr.com/ajgutierr3z/641659720253440000/tipos-de-diagramas-uml</a></div><script async src="https://assets.tumblr.com/post.js?_v=38df9a6ca7436e6ca1b851b0543b9f51"></script>
</div><figcaption class="wp-element-caption">Figura 1. Tipos de diagramas UML. Fuente: tomado de tumblr.com</figcaption></figure>



<p>En la figura 1, se puede apreciar los diferentes diagramas que se pueden crear usando el lenguaje UML, para este caso se hará un énfasis en el diagrama de clases; son, sin duda, el tipo de diagrama UML más utilizado. Es el bloque de construcción principal de cualquier solución orientada a objetos; muestra las clases en un sistema, atributos y operaciones de cada clase y la relación entre cada clase. En la mayoría de las herramientas de modelado, una clase tiene tres partes, nombre en la parte superior, atributos en el centro y operaciones o métodos en la parte inferior. En sistemas grandes con muchas clases relacionadas, las clases se agrupan para crear diagramas de clases. Las diferentes relaciones entre las clases se muestran por diferentes tipos de flechas.</p>



<h3 class="wp-block-heading">¿Qué es la Programación Orientada a Objetos (POO)?</h3>



<p>La <strong>POO</strong> es un paradigma de programación que utiliza &#8220;objetos&#8221; para representar datos y métodos que operan sobre esos datos. Los principios fundamentales de la POO incluyen:​</p>



<ul class="wp-block-list">
<li><strong>Encapsulamiento</strong>: Agrupa datos y métodos que operan sobre esos datos dentro de una sola unidad o clase.​</li>



<li><strong>Herencia</strong>: Permite que una clase derive de otra, heredando sus propiedades y comportamientos.​</li>



<li><strong>Polimorfismo</strong>: Habilidad de un objeto para adoptar diferentes formas, permitiendo que el mismo método se comporte de distintas maneras según el objeto.​</li>



<li><strong>Abstracción</strong>: Simplificación de la realidad mediante la representación de las características esenciales sin incluir detalles complejos.​</li>
</ul>



<p>Estos principios permiten crear software modular, reutilizable y fácil de mantener.​</p>



<p></p>



<figure class="wp-block-embed is-type-rich is-provider-tumblr wp-block-embed-tumblr"><div class="wp-block-embed__wrapper">
<div class="tumblr-post" data-href="https://embed.tumblr.com/embed/post/t:d0KmrxJkElKB8EsGh2qW4w/641660864002506752/v2" data-did="0a27035f8b13040ba7e4a0e509ac50d1542c98b4"  ><a href="https://www.tumblr.com/ajgutierr3z/641660864002506752/diagrama-de-clases">https://www.tumblr.com/ajgutierr3z/641660864002506752/diagrama-de-clases</a></div><script async src="https://assets.tumblr.com/post.js?_v=38df9a6ca7436e6ca1b851b0543b9f51"></script>
</div><figcaption class="wp-element-caption">Figura 2. Diagrama de clases. Fuente: tomado de tumblr.com</figcaption></figure>



<p>En la figura 2. Se pueden apreciar dos clases. La clase principal (también llamada clase padre o superclase) se llama <strong>&#8220;Monociclo&#8221;</strong>. Por otro lado, la clase secundaria (subclase o clase hija) lleva el nombre de <strong>&#8220;Bicicleta&#8221;</strong>. En el diagrama, se observan atributos, representados por los símbolos de suma o resta. También se incluyen funciones o métodos, que representan las acciones que el objeto puede realizar en el mundo real.</p>



<p>Recuerda que un atributo es una característica propia del objeto que se está modelando. Es decir, elementos como &#8220;parrilla&#8221;, &#8220;un par de diablos&#8221; o &#8220;una canasta&#8221; no se consideran atributos de la bicicleta. Estos se clasifican como accesorios, no como características esenciales del objeto.</p>



<p>No debemos olvidar que los atributos y métodos pueden ser privados o públicos. Los privados se representan con el símbolo de resta (–) y los públicos con el símbolo de suma (+).</p>



<h3 class="wp-block-heading">Integración de UML y POO</h3>



<p>La combinación de <strong>UML y POO</strong> es poderosa para el diseño de sistemas orientados a objetos. <strong>UML</strong> proporciona las herramientas necesarias para modelar los componentes y relaciones de un sistema basado en objetos. Por ejemplo, el diagrama de clases de UML representa las clases del sistema, así como sus atributos y métodos. También muestra las relaciones entre ellas. Este tipo de diagrama refleja directamente los conceptos fundamentales de la POO.</p>



<h3 class="wp-block-heading">Diagramas UML Relevantes para la POO</h3>



<p>Algunos de los diagramas UML más utilizados en el contexto de la POO incluyen:​</p>



<ul class="wp-block-list">
<li>Diagrama de Clases: Muestra las clases del sistema, sus atributos, métodos y las relaciones entre ellas.​</li>



<li>Diagrama de Objetos: Representa instancias de clases en un momento específico.​</li>



<li>Diagrama de Secuencia: Ilustra cómo los objetos interactúan en una secuencia de mensajes.​</li>



<li>Diagrama de Casos de Uso: Describe las funcionalidades del sistema desde la perspectiva del usuario final.​</li>
</ul>



<p>Estos diagramas ayudan a visualizar y planificar la estructura y comportamiento del sistema antes de la implementación.​​</p>



<p>Entender la relación entre UML y POO es esencial para cualquier desarrollador o diseñador de software. Usar UML en el contexto de la POO permite planificar mejor los sistemas. Además, mejora el diseño y la comunicación dentro del equipo. Como resultado, se obtienen soluciones más eficientes y fáciles de mantener.</p>



<p>visita <a href="https://www.frexus.dev/articulo/programacion-orientada-a-objetos/" target="_blank" rel="noreferrer noopener">POO</a></p>
<p>La entrada <a href="https://www.frexus.dev/articulo/uml-y-poo/">UML  y POO: Comprendiendo su Relación en el Desarrollo de Software</a> se publicó primero en <a href="https://www.frexus.dev">Frexus</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.frexus.dev/articulo/uml-y-poo/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">259</post-id>	</item>
	</channel>
</rss>
