Revista Smart Outcomes Vol 1

Page 1

Smart Smart Outcomes Outcomes

Principios Por Diego Pellicer

Análisis y Diseño orientado a objetos

NÚMERO 1 // VOLUMEN 1 // SEPTIEMBRE 2023 " E N C U E N T R A E L O B J E T O Q U E N E C E S I T A S "
"La Revista de Valor didáctico para Todos"
de Programación
de
Ventajas y desventajas de la Metodología Metodología Orientada a Objetos
Lenguajes
que admiten el el modelo
objetos
Conceptos Básicos Básicos de la Básicos Metodología Orientada a Objetos

Sumario

Editorial.

Preámbulo.

Metodología Orientada a Objetos (MOO) y Conceptos Básicos.

Conceptos Básicos y tipos de datos

Pilares de la Metodología Orientada a Objetos

Otros Principios básicos de la metodología orientada a objetos.

Ventajas y desventajas de la metodología orientada a objetos.

Aplicaciones del análisis y diseño orientado a objetos.

Lenguajes de programación que soportan la MOO.

Recomendaciones para emplear la MOO en distintos

lenguajes de programacion.

Referencias.

pp. 3 4 5 6 7 8 9 10 11 13 14 S U M A R I O 2 ..... ..... ..... ..... ..... ..... ..... ..... ..... ..... .....

REVISTA SMART OUTCOMES

La ciencia y el cómo esta se traduce en tecnología en la actualidad es algo muy frecuente, cada vez mas debido a los avances desarrollados en las distintas áreas por los científicos e investigadores. Además, en términos de avances en sistemas, se puede decir que hay perspectivas novedosas y que abordan otro punto de vista digno de difundir. Smart Outcomes se encarga de darle un enfoque a esta temática de la manera mas moderna pero fácil de entender para los lectores, de una forma amigable pero dinámica. Estar siempre al día es uno de nuestros objetivos principales, mas aún cuando se habla acerca de temas de vanguardia en tecnología, sistemas, y análisis para la solución de conflictos.

Créditos

Director: Diego Pellicer

Editor: Diego Pellicer

Diseño: Diego Pellicer

Imágenes: Diego Pellicer

Redacción: Diego Pellicer

Revisión: Diego Pellicer y Grecia Pellicer

revista Smart Outcomes N O T A D E L E D I T O R
3
EDITORIAL

PREÁMBULO

La metodología aplicada a objetos es un enfoque de desarrollo de software que se basa en el concepto de objetos, los cuales son entidades que encapsulan datos y funciones relacionados. Esta metodología se centra en el diseño, desarrollo y mantenimiento de sistemas de software utilizando principios como la encapsulación, la herencia y el polimorfismo.

Al aplicar la metodología orientada a objetos, se busca modelar el mundo real en el cual se encuentra el sistema, representando objetos y sus interacciones. Esto permite una mayor modularidad y reutilización de código, ya que los objetos se pueden diseñar y desarrollar de manera independiente y luego ser combinados para formar sistemas más complejos.

Ahora bien, La metodología aplicada a objetos involucra varias etapas en el proceso de desarrollo de software, como el análisis de requisitos, el diseño de clases y objetos, la implementación del código, las pruebas y el mantenimiento. Durante estas etapas, se utilizan técnicas y herramientas específicas, como diagramas de clases, diagramas de secuencia y lenguajes de programación orientados a objetos, para facilitar el desarrollo y garantizar la calidad del software resultante.

P R E Á M B U L O 4

METODOLOGÍA

Es el enfoque teóricopráctico que hace posible encontrar soluciones a problemas complejos partiendo del análisis y apoyándose en la planificación. Este planteamiento hace posible maximizar la eficiencia del desarrollo del software al ganar en visibilidad y control.

METODOLOGÍA ORIENTADA A OBJETOS

Es un modelo de programación en el que el diseño de software se organiza alrededor de datos u objetos, en vez de usar funciones y lógica. Se enfoca en los objetos que los programadores necesitan manipular, en lugar de centrarse en la lógica necesaria para esa manipulación.

La orientación a objetos se remonta a 1967, donde los noruegos Ole-Johan Dahl (1931-2002) y Kristen Nygaard (1926-2002) desarrollaron los conceptos básicos de la programación orientada a objetos, en un lenguaje llamado SIMULA 67.

Es un paradigma de programación, es decir, un modelo o un estilo de programación que nos da unas guías sobre cómo trabajar con él. Se basa en el concepto de clases y objetos. Este tipo de programación se utiliza para estructurar un programa de software en piezas simples y reutilizables de planos de código (clases) para crear instancias individuales de objetos.

Una clase es una plantilla

Define de manera genérica cómo van a ser los objetos de un determinado tipo. Por ejemplo, una clase para representar a animales puede llamarse ‘animal’ y tener una serie de atributos, como ‘nombre’ o ‘edad’ (que normalmente son propiedades), y una serie con los comportamientos que estos pueden tener, como caminar o comer, y que a su vez se implementan como métodos de la clase (funciones).

CLASE CONCEPTOS BÁSICOS OBJETO

Podría ser un animal. Un animal tiene una edad, por lo que creamos un nuevo atributo de ‘edad’ y, además, puede envejecer, por lo que definimos un nuevo método. Datos y lógica.

M E T O D O L O G I A O R I E N T A D A A O B J E T O S Y C O N C E P T O S B Á S I C O S
5

CONCEPTOS BÁSICOS

INSTANCIACIÓN

Son las características o propiedades de una entidad. Cada uno de los elementos de la entidad poseen los mismos atributos y a cada atributo se le asigna un valor único por cada elemento.

ATRIBUTOS DATOS

Los datos son la información que se utiliza y manipula en un programa. Pueden ser números, texto, fechas, valores booleanos, entre otros. Los datos son fundamentales para realizar cálculos, tomar decisiones y almacenar información. Los tipos son clasificaciones que se utilizan para definir el tipo de valor que puede contener una variable o una constante.

Una clase por sí sola no sirve de nada, pues no es más que un concepto, sin entidad real. Para poder utilizar una clase en un programa lo que hay que hacer es instanciarla. Instanciar una clase consiste en crear un nuevo objeto concreto de la misma. Es decir, un objeto es ya una entidad concreta que se crea a partir de la plantilla que es la clase. Este nuevo objeto tiene ya "existencia" real, puesto que ocupa memoria y se puede utilizar en el programa.

MÉTODOS

Son las acciones que puede realizar un objeto. Un método es un bloque de código que contiene una serie de instrucciones. Un programa hace que se ejecuten las instrucciones al llamar al método y especificando los argumentos de método necesarios.

TIPOS DE DATO

Cada tipo de dato tiene características específicas, como el rango de valores que puede almacenar y las operaciones que se pueden realizar con él.

Enteros (int): Representan números enteros 3, como -10, 0, 42.

Números flotantes (float): Representan números con decimales, como 3.14, -0.5.

Cadenas de texto (string): Representan secuencias de caracteres, como "Hola mundo", "123".

Valores booleanos (bool): Representan valores de verdadero (true) o falso (false).

Arreglos (arrays): Representan colecciones de elementos del mismo tipo.

Caracter (char): Representa caracteres individuales

C O N C E P T O S B Á S I C O S
6

PILARES DE LA PROGRMACION ORIENTADA A OBJETOS

Cuando se hace una abstracción, es porque se omiten detalles que no son necesarios para cierto análisis, y se quiere solamente mostrar lo que sí es relevante.

Desde el punto de vista del desarrollo de software, se ve que con una clase se puede realizar una abstracción de una entidad del mundo real. Por ejemplo, la clase carro, esta tiene la posibilidad de guardar datos relacionados a la marca y al año de salida al mercado del carro. Un carro del mundo real tiene más propiedades, pero, ¿de verdad son relevantes para lo que se quiere hacer?.

ENCAPSULAMIENTO

Los objetos se comunican entre ellos. Esto podría traer problemas de seguridad si un objeto puede modificar los datos de cualquier otro. Por eso, se necesita proteger la información de manipulaciones no autorizadas. De esta manera, cuando se comunican los objetos, hay caminos que se pueden seguir y hay caminos que no, datos protegidos, datos privados o públicos, métodos para acceder a cierta información, entre otros. Así se mantiene organizado el sistema. Por ende, el encapsulamiento permite controlar quien puede ver y utilizar los distintos módulos internos del sistema. En términos de clases, con el encapsulamiento se define el acceso a los miembros de la clase.

Hay varias maneras de compartir código, una de ellas es utilizando herencia. La herencia es una relación especial entre 2 clases, la clase base y la derivada, en donde la clase derivada obtiene la habilidad de utilizar ciertas propiedades y funcionalidades de la clase base, incluso pudiendo sustituir funcionalidad de la clase base. La idea es que la clase derivada “hereda” algunas de las características de la clase base. Significa de muchas formas. Es cuando un método recibe un parámetro que abarca varios tipos, la herencia “permite que un solo algoritmo pueda procesar distintas clases de entidades”. La idea es que se puede tener una función la cual reciba un parámetro, como una clase base, y se le pueda pasar a ese método objetos que sean instancias de las clases derivadas de dicha clase base.

Lo mismo ocurre si el método recibe como parámetro una interfaz.

P I L A R E S D E L A P R O G R M A C I O N O R I E N T A D A A O B J E T O S
7
HERENCIA POLIMORFISMO ABSTRACCIÓN

JERARQUÍA

Es una organización de elementos de acuerdo a su tipo, de acuerdo a una estructura de árbol. Así como en la botánica se utilizan jerarquías para definir familias de plantas, en OO, las jerarquías facilitan reconocer similitudes y diferencias entre objetos. Los 2 tipos de jerarquías más comunes en OO son la jerarquía por herencia o generalización, y la jerarquía por agregación. En la primera, se aplica la frase “ es un tipo de”, mientras que en la segunda se aplica “ es parte de”.

OTROSPRINCPIOSBASICOS DELAPROGRMACION ORIENTADAAOBJETOS

IDENTIDAD

Es la propiedad de un objeto, que lo distingue de todos los demás. Los seres humanos tienen huellas digitales, números de identificación, perfiles ADN. Estos representan el hecho de que cada uno es único e identificable. De la misma manera, cada objeto en un sistema OO (orientado a objeto) tiene una identidad distinta. La identidad es necesaria para que se pueda hablar de un objeto sin confundirlo con otro, y para que puedan existir al mismo tiempo varios objetos de la misma clase.

En ocasiones se tiende a confundir la identidad de un objeto con su estado. El estado es el conjunto de valores que encapsula un objeto Dos objetos pueden tener estados idénticos, pero siguen siendo objetos separados, distintos e identificables.

MODULARIDAD

La modularidad consiste en la descomposición de algo grande y comple-

CONCURRENCIA

Se preocupa por administrar el acceso a recursos compartidos entre operaciones que se sobreponen en el tiempo (incluyendo la ejecución en paralelo)

jo, en partes más sencillas y manejables. Mientras que la abstracción se enfoca en reducir la complejidad lógica, la modularidad se preocupa por aspectos físicos o de implementación. Por ejemplo, las clases se agrupan en paquetes para poder administrarlas mejor.

PERSISTENCIA

Los objetos tienen un periodo de existencia, desde los más volátiles, hasta los más estables. Si un objeto requiere sobrevivir al proceso en que se ejecuta, entonces se dice que es persistente. En otras palabras, la persistencia es la capacidad de un objeto para existir más allá del proceso que lo ejecuta. Para implementar la persistencia, requerimos de algún mecanismo para almacenar datos.

O T R O S P R I N C P I O S B A S I C O S D E L A P R O G R M A C I O N O R I E N T A D A A
8

DESVENTAJAS

Curva de aprendizaje

inicial

La Programación Orientada a Objetos puede resultar compleja para aquellos que no están familiarizados con sus conceptos y principios. La comprensión de conceptos como clases, objetos, herencia y polimorfismo puede requerir tiempo y esfuerzo. Además, puede ser necesario aprender nuevos lenguajes de programación que soporten la POO, lo que supone una barrera.

Mayor consumo de memoria.

Resistencia al cambio y adaptabilidad

Puede ser menos flexible en comparación con otros paradigmas de programación. Una vez que se establece una jerarquía de clases y se definen las relaciones entre objetos, puede resultar difícil realizar cambios significativos sin afectar otras partes del sistema.

Reutilización del código. Convierte cosas complejas en estructuras simples reproducibles. Evita la duplicación de código. Permite trabajar en equipo gracias al encapsulamiento ya que minimiza la posibilidad de duplicar funciones cuando varias personas trabajan sobre un mismo objeto al mismo tiempo. Al estar la clase bien estructurada permite la corrección de errores en varios lugares del código. Protege la información a través de la encapsulación, ya que solo se puede acceder a los datos del objeto a través de propiedades y métodos privados.

La abstracción permite construir sistemas más complejos y de una forma más sencilla y organizada

Estabilidad. Las clases diseñadas para una reutilización repetida se vuelven estables, de la misma manera que los microprocesadores y otros chips se hacen estables. El diseñador piensa en términos del comportamiento de objetos y no en detalles de bajo nivel. El encapsulamiento oculta los detalles y hace que las clases complejas sean fáciles de utilizar.

Calidad:Los diseños suelen tener mayor calidad, puesto que se integran a partir de componentes probados, que han sido verificados y pulidos varias veces

Mantenimiento más sencillo. El programador encargado del mantenimiento cambia un método de clase a la vez. Cada clase efectúa sus funciones independientemente de las demás.

Migración. Las aplicaciones ya existentes, sean orientadas a objetos o no, pueden preservarse si se ajustan a un contenedor orientado a objetos, de modo que la comunicación con ella sea a través de mensajes estándar orientados a objetos.

VENTAJAS 9 V E N T A J A S Y D E S V E N T A J A S D E L A M E T O D O L O G I A O R I E N T A D A A O B J E T O S

APLICACIONES DEL ANÁLISIS Y DISEÑO ORIENTADO A OBJETOS

El análisis y diseño orientado a objetos (ADOO) es una metodología utilizada en el desarrollo de software que se basa en los principios de la programación orientada a objetos (POO). ADOO se enfoca en el análisis y diseño de sistemas de software utilizando conceptos como objetos, clases, herencia, encapsulamiento y polimorfismo.

APLICACIONES DEL ANÁLISIS Y DISEÑO ORIENTADO A OBJETOS

Las aplicaciones del análisis y diseño orientado a objetos son diversas y se pueden encontrar en diferentes áreas de desarrollo de software. Algunas de estas aplicaciones incluyen:

Desarrollo de aplicaciones empresariales: ADOO se utiliza ampliamente en el desarrollo de sistemas empresariales, como sistemas de gestión de recursos humanos, sistemas de gestión de inventario, sistemas de contabilidad, entre otros. La orientación a objetos permite modelar y representar de manera más precisa los objetos y las interacciones en el dominio empresarial.

Desarrollo de aplicaciones web: ADOO se usa

en el desarrollo de aplicaciones web para crear componentes reutilizables y modularizar el código. Los frameworks y bibliotecas populares, como Ruby on Rails, Django y Laravel, utilizan principios de ADOO para facilitar el desarrollo de aplicaciones web escalables y mantenibles.

Desarrollo de videojuegos: Para modelar los personajes, objetos y escenarios del juego. La orientación a objetos permite una representación más natural y realista de los elementos del juego, así como la implementación de comportamientos y reglas del juego de manera modular.

APLICACIÓN

Es un programa informático diseñado como una herramienta para realizar operaciones o funciones específicas. Generalmente, son diseñadas para facilitar ciertas tareas complejas y hacer más sencilla la experiencia informática de las personas.

Desarrollo de sistemas embebidos: ADOO se utiliza en el desarrollo de sistemas embebidos, como sistemas de control industrial, sistemas de automóviles y dispositivos médicos. La orientación a objetos permite modelar y representar los componentes del sistema de manera modular y facilita la reutilización de código en diferentes sistemas embebidos

Desarrollo de aplicaciones móviles: Para crear componentes reutilizables y modularizar el código. Los frameworks y plataformas de desarrollo móvil, como Android y iOS, utilizan principios de ADOO para facilitar el desarrollo de aplicaciones móviles escalables y mantenibles.

10 A P L I C A C I O N E S D E L A N Á L I S I S Y D I S E Ñ O O R I E N T A D O A O B J E T O S

LENGUAJES DE PROGRAMACIÓN QUE SOPORTAN LA PROGRAMACIÓN ORIENTADA A OBJETOS

Es uno de los lenguajes de programación más utilizados y conocidos para la programación orientada a objetos. Proporciona un entorno de ejecución seguro y portátil, y se basa en el concepto de clases y objetos. James Gosling creo en 1955 Java. En Java se utiliza la herencia, el polimorfismo y el encapsulamiento para facilitar el desarrollo de aplicaciones escalables y mantenibles.

C++

Es un lenguaje de programación de propósito general que extiende el lenguaje C con características de la programación orientada a objetos. Fue desarrollado en 1980 por Bjarne Stroustroup en los laboratorios At&T. C++ Permite la creación de clases, herencia, polimorfismo y encapsulamiento. C++ es conocido por su eficiencia y se utiliza ampliamente en el desarrollo de sistemas y aplicaciones de alto rendimiento.

C#

Pronunciado "C sharp", es un lenguaje de desarrollado por Microsoft que se basa en la plataforma .NET. Andrés Hejlsberg decidió formar un equipo de trabajo en 1999 para crear C#, este es similar a Java en términos de sintaxis y características de la programación orientada a objetos Proporciona soporte para la creación de clases, herencia, polimorfismo y encapsulamiento, y se utiliza principalmente para el desarrollo de aplicaciones de Windows y aplicaciones web.

LENGUAJE DE PROGRAMACIÓN

Es un lenguaje informático especialmente diseñado para describir el conjunto de acciones consecutivas o instrucciones que un equipo informático debe ejecutar

Un entorno de desarrollo integrado (IDE) es una aplicación de software que ayuda a los programadores a desarrollar código de software de manera eficiente. Aumenta la productividad de los desarrolladores al combinar capacidades como editar, crear, probar y empaquetar software en una aplicación fácil de usar.

Se puede utilizar cualquier editor de texto para escribir código. Sin embargo, la mayoría de los entornos de desarrollo integrado (IDE) incluyen funcionalidades que van más allá de la edición de texto

L E N G U A J E S D E P R O G R A M A C I Ó N Q U E S O P O R T A N L A P R O G R A M A C I Ó N O R I E N T A D A A O B J E T O S
11
IDE JAVA

EJEMPLO DE CÓDIGO EN PYTHON

LENGUAJES

DE

PROGRAMACIÓN QUE SOPORTAN LA PROGRAMACIÓN ORIENTADA A OBJETOS

EJEMPLO DE CÓDIGO EN PHP

EJEMPLO DE CÓDIGO EN RUBY

Es un lenguaje de programación de alto nivel y fácil de aprender que también soporta la programación orientada a objetos Guido Van Rossum publicó la primera versión del código Python (versión 0.9.0) en 1991. Proporciona una sintaxis clara y concisa para la definición de clases y objetos, y ofrece características como herencia, polimorfismo y encapsulamiento. Python es ampliamente utilizado en el desarrollo web, análisis de datos, inteligencia artificial y muchas otras áreas.

(Hypertext Preprocessor) es un lenguaje de programación interpretado y de código abierto que se utiliza principalmente para el desarrollo web Creado en 1994 por Rasmus Lerdorf, la primera encarnación de PHP era un conjunto simple de ficheros binarios Common Gateway Interface (CGI) escritos en el lenguaje de programación C. PHP es compatible con la programación orientada a objetos (POO), lo que significa que permite la creación de clases, objetos, herencia, polimorfismo y encapsulamiento.

PYTHON PHP RUBY

Ruby es otro lenguaje de programación que se basa en la programación orientada a objetos. Yukihiro Matsumoto, más conocido como Matz, creó Ruby en 1995. Se destaca por su sintaxis elegante y expresiva, y ofrece características como herencia, polimorfismo y encapsulamiento

12 V E N T A J A S Y D E S V E N T A J A S D E L A M E T O D O L O G I A O R I E N T A D A A O B J E T O S

RECOMENDACIONE S PARA EMPLEAR MOO EN DISTINTOS LENGUAJES DE PROGRAMACION

Java:

Define clases utilizando la palabra clave «class» y especifica atributos y métodos dentro de ellas.

Utiliza la herencia con la palabra clave «extends» para crear subclases que hereden características de una clase base.

Aprovecha las interfaces para definir contratos que las clases deben implementar.

Aprovecha el polimorfismo para tratar objetos de diferentes clases de manera uniforme, utilizando métodos con la misma firma en diferentes clases.

Utiliza la encapsulación para ocultar los detalles internos de los objetos y proporcionar una interfaz pública para interactuar con ellos.

C++:

Utiliza la herencia con los operadores de acceso «public», «private» y «protected» para establecer la visibilidad de los miembros heredados.

Aprovecha las funciones virtuales y la herencia múltiple para lograr polimorfismo.

Utiliza la encapsulación con los modificadores de acceso «public», «private» y «protected» para controlar el acceso a los miembros de una clase

Python:

Aprovecha la herencia utilizando la clase base entre paréntesis al definir una clase.

Utiliza la herencia múltiple y el polimorfismo de manera natural, ya que Python lo permite.

Aprovecha las propiedades y los decoradores para implementar la encapsulación y controlar el acceso a los atributos de una clase.

C#:

Utiliza la herencia con los operadores de acceso «public» y «protected» para establecer la visibilidad de los miembros heredados.

Aprovecha las interfaces para definir contratos que las clases deben implementar.

Utiliza el polimorfismo utilizando la palabra clave «virtual» para los métodos en la clase base y «override» en las subclases.

Utiliza los modificadores de acceso «public», «private» y «protected» para lograr encapsulación y controlar el acceso a los miembros de una clase.

13
R E C O M E N D A C I O N E S P A R A E M P L E A R M O O E N D I S T I N T O S L E N G U A J E S D E P R O G R A M A C I O N

REFERENCIAS

(s.a.). (2008). Orientación a Objetos. Principios Básicos. Disponible en: https://acortar.link/BpUln3 . Consultado: 19 de Septiembre de 2023.

Alarcon, J. (s/f). Los conceptos fundamentales sobre Programación Orientada a Objetos explicados de manera simple. CampusMVP. Disponible en: https://acortar.link/bTfXli. Consultado: 19 de Septiembre de 2023.

(s/a). (2023). Programación orientada a objetos – ventajas y desventajas. Assembler Institute of Technology. elmundoinfinito. Disponible en: https://acortar.link/P5xtw4. Consultado: 19 de Septiembre de 2023.

Carrasco, D. (2021). Ventajas y desventajas de la programacion orientada a objetos. Prezi. Disponible en: https://acortar.link/4OhnvS. Consultado: 19 de Septiembre de 2023.

Martinez, M. (2020). ¿Qué es la Programación Orientada a Objetos?. Profile. Disponible en: https://acortar.link/bdgKzC . Consultado: 19 d Septiembre de 2023.

Amazon. (s/f). ¿Qué es un IDE (entorno de desarrollo integrado)?. Disponible en: https://aws.amazon.com/es/what-is/ide/. Consultado:

24 de Septiembre de 2023.

CursosAula21. (s/f). ¿Qué es Java y para qué sirve? Disponible en: https://www.cursosaula21.com/que-es-java/ Consultado: 19 de Septiembre de 2023.

(s/a). (2022). Evolución de los lenguajes de programación: Inicio y actualidad. Epitech. Disponible en: https://acortar.link/SA8rE4. Consultado: 19 de Septiembre de 2023.

Cueva, J. (2003). Análisis y diseño orientado a objetos. Repositorio Universidad de Oviedo. Disponible en: https://acortar.link/QyDup Consultado: 19 de Septiembre de 2023.

Euroinnova. (s/f). Diseño orientado a objetos. Disponible en: https://www.euroinnova.edu.es/blog/diseno-orientado-a-objetos. Consultado: 19 de Septiembre de 2023.

TechTarget. (2021). Programación orientada a objetos, OOP. ComputerWeekly. Disponible en: https://acortar.link/FR02l8. Consultado: 19 de Septiembre de 2023.

Alvarez, S. (2022). Tipos de datos. DesarrolloWeb. Disponible en https://desarrolloweb.com/articulos/tipos-datos-programaci Consultado: 19 de Septiembre de 2023.

R E F E R E N C I A S 14
“El analista de sistemas es un arquitecto de soluciones tecnológicas,construyendo puentes entre los usuarios y la tecnología."
E l ana lista de s istemasescomoundetective,resolviendoproblemasydescubriendosoluciones ocul t a s . " Smart Outcomes Volumen 1. Ed. Septiembre 2023 Por Diego Pellicer

Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.