




La metodología orientada a objetos es un enfoque de desarrollo de software que organiza el diseño y la implementación del sistema en términos de "objetos".
Un objeto es una entidad que combina datos y comportamientos en una sola unidad, encapsulando tanto el estado como las operaciones que se pueden realizar sobre ese estado.
Clase: Es un molde o plantilla a partir de la cual se crean objetos. Define atributos y métodos comunes a todos los objetos de ese tipo. Por ejemplo, una clase Coche puede tener atributos como color, marca, modelo y métodos como acelerar(), frenar().
Objeto: Es una instancia de una clase que representa una entidad con atributos y métodos (funciones o procedimientos). Los objetos interactúan entre sí enviándose mensajes (llamadas a métodos).
Atributo: Es una propiedad o característica de una clase que define el estado de los objetos de esa clase. Por ejemplo, nombre, edad y dirección pueden ser atributos de la clase Persona.
Método: Es una función definida dentro de una clase que describe el comportamiento de los objetos de esa clase. Los métodos operan sobre los atributos del objeto y pueden interactuar con otros objetos.
Encapsulamiento: Consiste en ocultar los detalles internos de los objetos y exponer sólo lo necesario a través de una interfaz pública. Los atributos son usualmente privados y se accede a ellos mediante métodos públicos llamados getters y setters. Esto protege los datos y asegura la integridad del estado del objeto.
Abstracción: Es el proceso de identificar las características esenciales de un objeto, ignorando los detalles irrelevantes. La abstracción permite centrarse en lo que un objeto hace en lugar de cómo lo hace.
Facilita la simplificación de la complejidad del sistema.
Herencia: Permite crear nuevas clases basadas en clases existentes. La clase nueva (subclase o clase derivada) hereda atributos y métodos de la clase existente (superclase o clase base) y puede añadir nuevos atributos y métodos o redefinir los existentes. Esto promueve la reutilización del código y la creación de jerarquías de clases.
Polimorfismo: Permite que objetos de diferentes clases sean tratados como objetos de una clase común a través de una interfaz común. El polimorfismo se manifiesta en dos formas principales: el polimorfismo de sobrecarga (un mismo nombre de método puede tener diferentes implementaciones) y el polimorfismo de inclusión (un objeto de una subclase puede ser tratado como un objeto de una superclase).
Modularidad: Facilita la división del sistema en módulos independientes que pueden ser desarrollados y mantenidos por separado.
Reutilización: Fomenta la reutilización de código a través de la herencia y las bibliotecas de clases.
Mantenibilidad: Mejora la capacidad de mantener y actualizar el sistema debido a su estructura clara y bien definida.
Flexibilidad: Permite realizar cambios y extensiones al sistema sin afectar significativamente otras partes del mismo.
Curva de aprendizaje: Para los nuevos desarrolladores, entender y aplicar conceptos como herencia, polimorfismo y encapsulación puede ser difícil.
Diseño inicial complejo: Crear un diseño
OO bien estructurado requiere una planificación y análisis exhaustivos, lo cual puede ser complicado y llevar mucho tiempo.
No adecuado para todos los tipos de problemas: Algunos problemas y tareas no se prestan bien a la modelización OO.
Sobrecarga conceptual: Aunque la OO promueve la reutilización del código, identificar y generalizar componentes reutilizables no siempre es sencillo y puede requerir un esfuerzo significativo.
Object-Oriented Analysis and Design o OOAD (por sus siglas en inglés), se aplica en una variedad de contextos y sectores debido a sus ventajas en modularidad, reutilización y mantenibilidad del código.
Customer Relationship Management (CRM): Los sistemas CRM, que ayudan a las empresas a gestionar las interacciones con los clientes, suelen ser desarrollados utilizando principios OO para facilitar la personalización y escalabilidad. Aplicaciones móviles: El desarrollo de aplicaciones móviles en plataformas como Android (Java/Kotlin) y iOS (Swift) emplea OOAD para manejar la complejidad de la interfaz de usuario, la gestión de datos y la conectividad.
Motores de juego: Unity (C#) y Unreal Engine (C++) utilizan OOAD para modelar personajes, entornos, y la lógica del juego de manera modular y reutilizable.
Trading y banca: Las plataformas de trading, sistemas de gestión de riesgos y aplicaciones bancarias utilizan OOAD para manejar transacciones complejas y garantizar la integridad y seguridad de los datos.
Aplicaciones educativas: El desarrollo de aplicaciones y juegos educativos interactivos emplea OOAD para crear experiencias de aprendizaje atractivas y personalizables.
Java: Es uno de los lenguajes más conocidos y ampliamente utilizados que sigue estrictamente los principios de la orientación a objetos. Es muy popular en el desarrollo de aplicaciones empresariales, aplicaciones móviles (especialmente Android), y sistemas grandes y complejos
C++: Es una extensión del lenguaje C que añade características orientadas a objetos. Es utilizado en el desarrollo de sistemas operativos, juegos, aplicaciones en tiempo real, y software de alto rendimiento.
JavaScript: Originalmente un lenguaje de scripting para el desarrollo web, JavaScript ha evolucionado para soportar la programación orientada a objetos a través de prototipos. Con la introducción de ECMAScript 6 (ES6), JavaScript ahora también soporta clases y otros conceptos orientados a objetos más formales.
Swift: Desarrollado por Apple, es un lenguaje moderno que reemplazó a Objective-C para el desarrollo de aplicaciones en las plataformas de Apple.
Swift es seguro, rápido y sencillo de usar, con un fuerte soporte para la orientación a objetos.
Python: Aunque es un lenguaje multiparadigma, soporta plenamente la orientación a objetos. Es conocido por su simplicidad y versatilidad, y se utiliza en una variedad de áreas, incluyendo desarrollo web, ciencia de datos, inteligencia artificial y automatización.
PHP: Aunque inicialmente no fue un lenguaje orientado a objetos, las versiones más recientes de PHP (desde PHP 5 en adelante) han añadido un fuerte soporte para la programación orientada a objetos. Es ampliamente utilizado en el desarrollo web.
González, J. (2024). Qué es la Metodología orientada a objetos. Recuperado el 30/05/2024 en: https://www.academia.edu/que-es-lametodologia-orientada-a-objetos
Rodríguez, M. (2024). Metodología de la programación orientada a objetos. Recuperado el 30/05/2024 en: https://www.academia.edu/metodologia -de-la-programacion-orientada-aobjetos
Pérez, A. (2024). UML: Una Metodología Orientada a Objetos aplicada a la empresa. Recuperado el 30/05/2024 en: https://www.esic.edu/documentos/revis tas/esicmk/060130 _ 633111 _E.pdf
Martínez, L. (2024). Análisis y diseño orientado a objetos: lenguaje UML. Recuperado el 30/05/2024 en: https://cv.uoc.edu/analisis-y-disenoorientado-a-objetos
Sánchez, P. (2024). Diseño y programación orientado a objetos. Recuperado el 30/05/2024 en:
https://www.salleurl.edu/diseno-yprogramacion-orientado-a-objetos
García, R. (2024). Guía docente: Metodología y Programación Orientada a Objetos. Recuperado el 30/05/2024 en: https://www.upc.edu/moometodologia-y-programacionorientada-a-objetos
López, F. (2024). Fundamentos de la Programación Orientada a Objetos. Recuperado el 30/05/2024 en: https://www.academia.edu/fundamento s-de-la-programacion-orientada-aobjetos
Mendoza, C. (2024). Conceptos de la Metodología Orientada a Objetos. Recuperado el 30/05/2024 en: https://www.academia.edu/conceptosde-la-metodologia-orientada-a-objetos
Quintanilla, A. (2024). Metodología
Orientada a Objetos: Principios del modelado de negocios. Recuperado el 30/05/2024 en: https://www.academia.edu/metodologia -orientada-a-objetos-principios-delmodelado
Silva, D. (2024). Construyendo aplicaciones web con una metodología de diseño orientada a objetos. Recuperado el 30/05/2024 en: https://www.academia.edu/construyend o-aplicaciones-web-con-unametodologia-de-diseno-orientada-aobjetos
Cardona, J. (2024). Programación orientada a objetos. Recuperado el 30/05/2024 en: https://www.academia.edu/programaci on-orientada-a-objetos