METODOLOGÍA ORIENTADA A OBJETOS
Autor: Andrés José Rodríguez Valery
C.I: V-30.057.656
Autor: Andrés José Rodríguez Valery
C.I: V-30.057.656
La Metodología Orientada a Objetos es un modelo aplicado para simplificar la comprensión de un proceso o sistema complejo. Si bien se puede acortar la Metodología Orientada a Objetos por el acrónimo MOO, en el desarrollo de esta revista se va a acortar a Metodología OO (…Orientada a Objetos).
La Metodología OO no tiene un creador definido, más bien es resultado de unir y aplicar varios conceptos desarrollados en el Instituto de Tecnología de Massachusetts (MIT) entre los finales de 1950 y los principios de 1960 dentro de los departamentos relacionados con la programación, entre los varios conceptos heredados a la Metodología OO, existen 4 que son de gran importancia:
• Es todo ser o cosa real o abstracta. Este término fue usado en diversos del MIT, aunque unos de los primeros fue el grupo de inteligencia artificial, que usaba el término “objeto” para referirse a los elementos dentro del lenguaje de operación que usaban.
Son aquellas características propias de los objetos. Este término fue usado por el grupo de inteligencia artificial, junto al de objeto.
• Son aquellas acciones que puede realizar el objeto, sin interactuar con otros objetos. Comúnmente los métodos se basan en alterar atributos del propio objeto que los realiza. Por ejemplo, si el objeto es una persona, uno de sus métodos puede ser el dormir, porque altera el atributo “despierto” a “dormido” . Fue usado por primera vez por el grupo de programación del MIT.
OBJETO A
• Son aquellas acciones que puede realizar el objeto, donde interactúa con otro objeto, afectando los atributos de otro objeto y/o indicando que debe realizar un método definido. El mensaje posee 3
características:
• El objeto emisor
• Un objeto destinatario
OBJETO B
• Una indicación de que método debe realizar el objeto destinatario y/o de que atributo debe cambiar el objeto destinatario.
Con todo lo anterior tenemos claro que la Metodología OO simplificar la comprensión de un proceso o sistema complejo y que usa los conceptos de “objeto”, “atributos”, “métodos” y “mensaje” para hacer esto, la verdad es que esto no deja muy en claro su utilidad. Así que se va a usar un ejemplo para demostrar su utilidad, usando la siguiente situación “define el funcionamiento de un reloj analógico (solo las agujas)”
Para poder definir el funcionamiento de un reloj analógico (el reloj de agujas) vamos a usar la Metodología OO, donde se descompondrá aquel sistema (el reloj) que deseamos simplificar o que llamaremos “todo” (el término “todo” no es usado para la metodología, pero dentro de esta revista se usará para referirse a aquello que se desea simplificar usando la metodología). Dicha descomposición se hará siguiendo un conjunto de pasos recomendados para este proceso, 1) Reconocer cual es el “todo; 2) Reconocer cuales son los objetos dentro del “todo”; 3) Reconocer que atributos diferencia a cada objeto; 4) Reconocer que métodos realiza cada objeto; y 5) Reconocer cuales son los mensajes realizados entre objetos y cuáles son sus características.
Debido a que se nos pidió definir el funcionamiento de un reloj analógico, podemos reconocer que el “todo” en este caso es el reloj analógico
Debido a que se nos pidió trabajar con las agujas, y consideramos al reloj como “todo”, podemos reconocer 3 objetos, la aguja de los segundos, la aguja de los minutos y la aguja de las horas
La aguja de los segundos La aguja de los minutos
La aguja de las horas
Para reconocer los atributos de cada aguja, solo hay que ver que diferencia a una aguja de otra y categorizarlo; en términos mas simples, vemos que caracteriza a cada aguja y lo agrupamos bajo una misma cualidad, siendo esta nuestro atributo. En este caso usaremos 4 atributos: forma, color, anchura y longitud; donde:
• En la aguja de los segundos:
o Forma: Alfiler
o Color: Negro
o Anchura: Delgada
o Longitud: Largo (alcanza las lineas al borde del reloj)
• En la aguja de los minutos
o Forma: Flecha
o Color: Rojo
o Anchura: Gruesa
o Longitud: Largo
• En la aguja de las horas
o Forma: Flecha
o Color: Rojo
o Anchura: Gruesa
o Longitud: Corta
Como se observa, el atributo de cada objeto se llenó con una característica, denominada “dato” .
Ahora hay que reconocer que proceso realiza cada aguja por separado, en este caso se observa que:
• En la aguja de los segundos:
o La aguja se mueve 6 grados a la derecha (para apuntar a la siguiente línea en el borde del reloj). El método se realiza cada segundo mientras el estado sea activo.
• En la aguja de los minutos
o La aguja se mueve 6 grados a la derecha. El método se realiza cada segundo mientras el estado sea activo.
• En la aguja de las horas
o La aguja se mueve 30 grados a la derecha (cada vez que se mueva apuntará a uno de los números al borde del reloj). El método se realiza cada segundo mientras el estado sea activo.
Ahora hay que reconocer que interacción realiza cada aguja con otra, en este caso se observa que:
• En la aguja de los segundos:
o Cuando la aguja realice su método 60 veces (indicando que pasaron 60 segundos), dando una vuelta completa al reloj, enviará un mensaje a la aguja de los minutos, indicando que debe realizar su método. De esta forma, cada vez que pasen 60 segundos, la aguja de los minutos se moverá, indicando que pasó un minuto
• En la aguja de los minutos:
o Cuando la aguja realice su método 60 veces (indicando que pasaron 60 minutos), dando una vuelta completa al reloj, enviará un mensaje a la aguja de las horas, indicando que debe realizar su método. De esta forma, cada vez que pasen 60 minutos, la aguja de las horas se moverá, indicando que paso una hora
• En la aguja de las horas:
o No realiza un mensaje.
…
Con este proceso se ha logrado definir el funcionamiento de cada aguja dentro del reloj, incluyendo como reconocerlas, que función cumplen de forma independiente y como interactúan entre sí para lograr un correcto funcionamiento. Claro, fue una explicación algo larga para lo que a primera vista son agujas que se mueven cada cierto tiempo, sin embargo, hay que
denotar 2 cosas:
1. Si bien el proceso de análisis aplicado con la metodología OO es más complejo que otros medios de análisis más convencionales, si se aplica correctamente, pocas veces deja espacios para interpretación, cada elemento (objeto) del “todo” analizado puede ser identificado fácilmente, y se conocen que hace y cuál es su importancia dentro del “todo”; siendo un análisis muy útil para análisis detallados
2. La forma de utilizar la Metodología OO depende de la propia habilidad del que la aplica y del motivo por el cual lo usa, esto resulta en que 2 personas que usen la Metodología OO para simplificar un mismo “todo”, pueden dar resultados ligeramente distintos
“Si eso no importante, fingiré que no existe”
Abstracción
Miau
Haz un ruido
Encapsulación Herencia
Polimorfismo
Guau!
La Metodología OO posee ciertas propiedades conocidas como los principios, entre los cuales destacan 4, que son conocidos como los 4 Principios Fundamentales y el nombre no es en vano, debido a que por lo general cada vez que se usa la Metodología OO se aplicará por lo menos uno de estos principios. Los principios son:
Abstracción
Este principio se puede definir en una sola frase “Si eso no es importante, fingiré que no existe”, lo que suena bastante tonto, pero es así como funciona. Es decir, cuando designamos cuales son los objetos, atributos, métodos y mensajes presentes en el “todo” a simplificar, solo hay que usar aquellos que son de nuestro interés según el propósito de la simplificación; esto resulta en que ignoremos detalles que no son importantes para nuestro propósito.
Por ejemplo, si consideramos el ejemplo del reloj, se ignoró la longitud exacta de cada aguja (y se uso algo tan general como “largo” o “corto”), considerar la fuente de energía y el fondo del reloj como objetos, o trabajar a mayor profundidad el cómo la aguja de los segundos ejecuta su método cada segundo; estos detalles no son importantes en este caso, debido a que la Metodología OO se usó para crear un ejemplo simple, y por extensión no requiere de datos tan detallados.
Para reconocer que información ignorar, es recomendado previamente meditar a profundidad para que se van a utilizar los resultados del uso del Modelo OO, y la conclusión de dicha meditación se debe mantener en mente a cada paso de la ejecución del modelo
Donde el principio de la abstracción se basa en ignorar la existencia de detalles de poca importancia, el principio de la encapsulación se basa en limitar la interacción con estos detalles y/o asegurar que estos detalles sean ignorados por ciertas personas. Existen características de ciertos objetos que no deben cambiar sin importar que o si pueden ser cambiados, se debe hacer usando un método específico, si esto es necesario se deben encapsular estas características, limitando la capacidad de otros objetos a enviar un mensaje que les afecte (si bien aún es posible, se suelen requerir algún tipo de condición para poder usar un mensaje).
Por otro lado, si se requiere que cierto grupo de personas no puedan acceder a ciertas características de uno o más objetos, también se deben encapsular dichas características, limitando el acceso a dicho grupo a esta información
Claro, ahora sabes cuando debes encapsular, sin embargo, nunca explica “como debes encapsular” y esto es debido a que no existe una regla de para poder realizar un encapsulamiento perfecto, sino que es algo que varía según que característica debe ser encapsulada, por cual motivo y cuáles son los medios disponibles para cumplir con ello. Por ejemplo, si usamos el reloj anterior, su creador tuvo que inventar un mecanismo que permitiera el giro de cada aguja de forma adecuada, y si venderá dicho reloj a sus clientes, estos no deben ser capaces de afectar fácilmente al mecanismo interno del reloj (porque lo podrían dañar por accidente) y tampoco es necesario que lo vean, así que la solución más simple, es cubrir este mecanismo, de forma que no sea afectado fácilmente.
Para eso el creador pudo usar el armazón común de un reloj y ajustarlos con tornillos, de esta forma encapsuló el mecanismo interno de forma que el cliente no podrá afectarlo de forma accidental, sino que requerirá de un equipo (destornillador) para acceder a este (limitando la interacción) y a la vez, el mecanismo no será visible hasta que se retire el armazón (haciendo que la mayoría de los clientes ignoren la existencia del mecanismo); es decir que, realizó un encapsulamiento que se ajustaba a la situación de un reloj.
Este principio establece que se pueden agrupar un conjunto de propiedades (atributos, métodos y mensajes) en un modelo denominado “clase”, este modelo puede ser aplicado en uno o varios objetos, los cuales “heredan” las propiedades de la clase y pasan a ser conocidos como “instancias” de la clase. Una clase también puede heredar de otra clase, si se hace esto, esta pasa a ser la “clase hija” y la otra clase pasa a ser una “superclase” o “clase padre”.
Este principio es usado para facilitar el reconocimiento de las propiedades de varios objetos con diversas similitudes. Por ejemplo, digamos que se usa la Metodología OO para organizar la construcción de un conjunto de automóviles, todos pueden ser de marcas distintas, pero más de una vez, van a compartir ciertos atributos, tales como la “marca”, sin usar las clases, se debe mencionar la marca de cada auto sin importar cuantas veces se repite.
Para facilitar esto, se crea una clase denominada “Toyota” y establecemos que la clase posee el atributo “Marca: Toyota”, ahora podemos volver a todos los carros (los objetos) con este atributo en instancias de “Toyota”
Atributos:
• Marca: Toyota
Con la clase “Toyota” se ahorra marcar de forma individual el atributo “Marca: Toyota” y solo se debe declarar a cada objeto como una instancia de la clase con este atributo.
Como detalle, cada objeto que sea instancia de una clase o clase hija, puede poseer sus propios atributos, métodos y/o mensajes no heredados.
Haz un ruido
Guau! Miau
Este principio trabaja es una propiedad de los métodos y los mensajes, donde según el contexto donde son ejecutados, estos se ejecutan de forma distinta según el contexto. Por ejemplo, si tenemos 2 objetos, uno es un perro y otro es un
gato, y ambos poseen un método que sea “hacer un ruido”, si este se ejecutara en ambos objetos, el perro ladraría y el gato maullaría, es decir, a pesar de ser el mismo método, como el contexto del objeto que lo realizaba era distinto, la ejecución del método fue distinta.
La Metodología OO tiene ciertas ventajas y desventajas en su aplicación, y es importante conocer las más destacables, para saber cuándo sería mejor o peor usarla. Comenzaremos con…
• Es perfecto para planificar: Todo proceso de planificación suele trabajar con conceptos como “pasos” y “trabajo en equipo” ¿Y qué tienen estos en común? Un conjunto de partes que trabajan en conjunto para cumplir una función en común (un sistema), el área de especialidad de la Metodología OO, y con su uso se pueden generar pasos de forma organizada y cuyo orden de ejecución es clara, distribuir trabajos entre miembros de un equipo de forma eficaz, etc.
• Es muy útil para notar errores: Debido a que se separa un “todo” en sus elementos más simples y sus propiedades, si el “todo” falla, solo hay que tomar cada elemento por separado y comprobar si cumplen su función correctamente, y de esta forma, se encuentra uno o varios elementos que fallan, seguramente se habrá encontrado la raíz del fallo.
• Adaptabilidad: La Metodología OO, a pesar de ser llamado “metodología”, no sigue un conjunto de pasos o instrucciones definidas para cumplir su función, sino que es la aplicación de ciertos conceptos y la forma en la cual esto se realiza depende del que lo use; esto resulta en que la Metodología OO es muy adaptable, donde se puede usar como sea necesario para lograr el objetivo de su usuario.
• Inexactitud: Al igual que la Metodología OO es adaptable y puede usarse como requiera el usuario por su falta de instrucciones, esto también resulta en que una inexactitud en lo referente a cómo aplicarla, de tal forma que, si una persona inexperta intenta aplicar esta metodología, lo más probable es que falle en el proceso o que los resultados no sean los deseados. Para usar la Metodología OO es requerido tener experiencia, ya sea de forma práctica y viendo ejemplos de sus usos (forma teórica).
• Ineficiencia: La Metodología OO es muy útil para sistemas complejos, por lo general, su uso en sistemas simples es poco recomendado, debido a que el proceso a seguir suele ser más complicado que el de otras metodologías, tal como la metodología del enfoque de sistemas (cuyo uso es parecido)
Por lo general, la Metodología OO suele ser usada en la creación y análisis de software y hardware, donde tiene 4 usos especializados dentro de estos: El Análisis Orientado a Objetos (Análisis OO)
Este uso, tal y como indica su nombre, está especializado en aplicar la Metodología OO para comprender propiedades, funcionamiento, composición, etc. del “todo” simplificado. El Análisis OO suele ser aplicado en el desarrollo de software, debido a que entre los pasos en la creación de este se ubican 2 etapas denominadas “Requerimientos” donde se comprende que requiere el cliente (la persona u organización a la cual se le creará el software) en el software y “Análisis” donde se
decide qué características debe poseer el software para cumplir con los intereses del cliente.
En las etapas de Requerimientos y Análisis se puede llegar a tener que analizar y comprender no solo los intereses del cliente, sino también que uso se le va a dar al software y como se le haría más útil a la empresa, y para ello, el Análisis OO llega a ser usada para simplificar todo esto y poder analizar el resultado para obtener claro que requerirá el software.
Este uso está especializado en aplicar la Metodología OO para crear algo nuevo, dependiendo de un análisis previo, el cual usa para diseñar el cómo funcionar un “todo” nuevo, hay que destacar que el Diseño OO solo trabaja lo teórico del “todo” a crear, no se realiza ningún proceso de creación, solo la planificación.
Comúnmente se observa su uso en la creación de software, debido a que después de la etapa de Análisis, se pasa a la etapa de “Diseño”, donde, tras conocer que debe poseer el software a crear, el equipo procede a planificar como el software cumplirá con todas las características reconocidas,
y por su especialidad en la planificación, el Diseño OO suele usarse en esta etapa
Como se comentó anteriormente, el Diseño OO depende de un análisis previo del “todo” a crear, lo que abre la puerta a usar previamente un Análisis OO; si ambos se usan en conjunto, se denomina a proceso completo como Análisis y Diseño OO y como se puede deducir, suele ser usado en las etapas de Requerimientos, Análisis y Diseño de software.
La Programación OO es algo denominado “Paradigma de programación”, un modelo creado para lenguajes de
programación (que son lenguajes usados por los programadores para hacer que las máquinas sigan una serie de instrucciones, siendo estas el código del software).
La Programación OO es bastante famosa, hasta el punto de que este paradigma de programación es más famoso que la propia Metodología OO y se ubica entre los padigmas de programación más utilizadas. Esto se debe a que es bastante útil de usar en código, y además, varios de los lenguajes de programación que usa son de los más famosos, por ejemplo, dentro de los lenguajes de programación que usan el paradigma de Programación OO, podemos mencionar a:
• Java: Es uno de los lenguajes de programación más usados en todo el mundo, si no; el más usado en el mundo, el cual a pesar de su antigüedad (fue hecho en 1995), se ha vuelto famoso por su versatilidad, permitiendo programar todo tipo se software. Este es el lenguaje de programación usado para crear videojuegos como Minecraft y Pokémon Go.
• C++: Este lenguaje es una extensión de “C” (otro lenguaje de programación), que fue hecho para trabajar con Programación OO. Este es otro de los lenguajes más usados del mundo, y fue usado para crear los juegos, Among Us y Pokémon Go (junto a Java)
• Python: Es uno de los lenguajes de moda, y uno de los motivos (más allá de la publicidad de Next U) es que es un lenguaje multiparadigma, es decir, trabaja con varios paradigmas de programación, incluyendo la programación orientada a objetos. Este lenguaje fue usado para programar Instagram.
•
Otros lenguajes de programación:
o C#: Uno de los lenguajes más populares del mundo, pero suele ser usado por el público.
o Ruby: Es un lenguaje multiparadigma.
o Objective C: Uno de los principales lenguajes usados para crear el software de Apple.
o PHP: Es multiparadigma, aunque se suele usar para codificar con Programación OO.
209.157.137.xxx (2001). Object-oriented programming. Recuperado el 19 de septiembre de 2023 en: https://en.wikipedia.org/wiki/Object-oriented_programming Admin (2018). Análisis y diseño orientados a objetos. Recuperado el 21 de septiembre de 2023 en: https://diagramasuml.com/analisis-y-diseno-orientados-aobjetos/
Anónimo (2014). Metodología de la Programación Orientada a Objetos (POO) con C++. Recuperado el 19 de septiembre de 2023 en:
https://www.bibliadelprogramador.com/2014/02/metodologiade-la-programacion.html
Anónimo (2020). Los 10 lenguajes de programación más utilizados en 2020. Recuperado el 22 de septiembre de 2023 en:
https://codespaceacademy.com/blog/10-lenguajesprogramacion-utilizados/
Anónimo (sin fecha). 3.3 Descripción de Metodologías orientadas a objetos. Recuperado el 19 de septiembre de 2023 en: https://cursos.clavijero.edu.mx/cursos/178_pds/modulo3/cont enido/tema3.3.html?opc=2
Anónimo (sin fecha). Ciclo de vida del software. Recuperado el 21 de septiembre de 2023 en: https://ciclodevida.net/delsoftware
Anónimo (sin fecha). Mensajes y métodos. Recuperado el 19 de septiembre de 2023 en: http://profesores.fib.unam.mx/carlos/java/java_basico3_2.html
Calderon, I (2021). Los 4 Principios de la Programación Orientada a Objetos. Recuperado el 20 de septiembre de 2023 en: https://medium.com/streamelopers/los-4-principiosde-la-programaci%C3%B3n-orientada-a-objetosfeccc61ff5e0
Edgar (2002). Programación orientada a objetos. Recuperado el 19 de septiembre de 2023 en: https://es.wikipedia.org/wiki/Programaci%C3%B3n_orientada _a_objetos
FritzSolms (2005). Object-oriented analysis and design. Recuperado el 21 de septiembre de 2023 en: https://en.wikipedia.org/wiki/Objectoriented_analysis_and_design
Iammalf (sin fecha). Los 4 principios fundamentales de la programación orientada a Objetos POO. Recuperado el 20 de septiembre de 2023 en: https://webdesigncusco.com/los4-principios-fundamentales-de-la-programacion-orientada-aobjetos-poo/
López, L (2021). Videojuegos populares y el lenguaje en el que desarrollaron. Recuperado el 22 de septiembre de 2023 en: https://www.berlitz.com/es-mx/blog/videojuegospopulares-y-el-lenguaje-en-el-que-desarrollaron Marcos (sin fecha). Programación orientada a objetos:
¿Qué es y para qué sirve?. Recuperado el 22 de septiembre de 2023 en:
https://v1.apx.school/blog/programacion-orientada-a-objetos
Marker, G (sin fecha). Lenguajes de programación orientada a objetos. Recuperado el 22 de septiembre de 2023 en: https://www.tecnologia-informatica.com/lenguajes-deprogramacion-orientada-a-objetos/
Román, C (sin fecha). CONCEPTOS DE LA METODOLOGÍA
ORIENTADA A OBJETOS. Recuperado el 19 de septiembre de 2023 en: http://profesores.fib.unam.mx/carlos/aydoo/conceptos_oo.html