INSTRUMENTO DE EVALUACIÓN Programa de Formación: Proyecto Formativo: Fase Proyecto: Resultado de Aprendizaje: Actividad de Aprendizaje: Evidencias de Conocimiento: Criterios de Evaluación: ● ● Tecnólogo en análisis y desarrollo de software Construcción de software integrador de tecnologías orientadas a servicios Planeación 220501095-01 Elaborar los artefactos de diseño del software siguiendo las prácticas de la metodología seleccionada. GA4-220501095-AA2 - Elaborar artefactos usando el paradigma de programación orientada a objetos. Taller de conceptos y principios de programación orientada a objetos GA4-220501095-AA2-EV01 Interpreta el informe de análisis identificando las características del software a diseñar. Define las plataformas tecnológicas a emplear en el desarrollo de acuerdo con las condiciones del software a desarrollar. Define los entregables de diseño siguiendo los conceptos y principios de orientación a objetos. ● 2. LISTA DE CHEQUEO No. 1. 2. 3. 4. VARIABLES/INDICADORES DE LOGRO Presenta el glosario de terminología utilizada en la POO. Explica las características, los principios o pilares básicos de la POO. Define y aplica correctamente todos los conceptos claves de la POO. Aplicó las normas básicas de presentación de un documento escrito. 3. EVALUACIÓN: Observaciones: Juicio de valor: CUMPLE SÍ NO Observaciones 40% 30% 20% 10% TALLER DE CONCEPTOS Y PRINCIPIOS DE PROGRAMACIÓN ORIENTADA A OBJETOS GA4-220501095-AA2-EV01. JOSE SNEIDER TOVAR SOLANO SERVICIO NACIONAL DE APRENDIZAJE SENA ANÁLISIS Y DESARROLLO DE SOFTWARE 2675850 2023 INTRODUCCIÓN En el presente documento se pretende desarrollar trabajo de apropiación de conceptos y principios de la programación orientada objeta para una mayor comprensión y apropiación de los mismos. POO - Sección BD/Programación (Programación Orientada a Objetos) o también OOP por su sigla en inglés (ObjectOriented Programming). No es más que una evolución de los lenguajes estructurados hacia una simplificación del mantenimiento del código, así como a unas mayores posibilidades de reutilización de éste. Los componentes básicos de un lenguaje orientado a objetos son la encapsulación, la herencia y el polimorfismo. La forma tradicional de programar es crear una solución secuencial —una instrucción escrita detrás de otra— o bien, dividir el programa en varios módulos. Ambos sistemas tienen sus desventajas: las aplicaciones acaban ocupando mucho espacio, ya que en muchos casos se repiten trozos de código. Sin embargo, existe la técnica de programación de orientación a objetos. Aquí el programador define un objeto, por ejemplo, una factura y conjuntamente define las funciones —conjuntos de instrucciones— que se le pueden aplicar: consultar el monto total, escribir la fecha, etc. De esta manera todos los programas que usen facturas pueden emplear el mismo objeto y todas sus funciones. El que hacer con objetos Simplificando mucho, la idea de la POO es construir aplicaciones creando objetos que se relacionen e interacciones entre sí. Cada uno por sí solo brinda una determinada funcionalidad, y con su conjunto se construye la aplicación. La buena noticia es que, si seguimos buenos conceptos de diseño para el modelo de objetos a usar, este paradigma puede ser realmente fácil y muy poderoso. Paradigma de la POO El paradigma orientado a objetos es posterior a la programación estructurada, y surgió a mediados de los 70. Modelo conceptual: Es un mundo de objetos que interactúan entre sí a través de mensajes para realizar una tarea dada. Objetos: Son una entidad que poseen un estado interno y un comportamiento. El estado corresponde a una memoria interna que es invisible e inaccesible para otros objetos. El comportamiento está definido por un conjunto de acciones que un objeto contiene para contestar mensajes (interfaces). Mensajes: Todo procesamiento es activado por mensajes entre objetos. Se podría ver de la siguiente forma: al recibir un mensaje el objeto efectúa una acción especifica como respuesta, puede alterarse su estado interno, puede enviar mensajes a otros objetos o puede crear objetos nuevos. Paralelismo: Representa un mundo de objetos paralelos en un instante dado. Un objeto puede estar ejecutando una acción interna, como respuesta a una solicitud de otro objeto que aguarda previamente, mientras un 3er objeto acaba de mandar un mensaje a un 4to objeto, pero que en ese mismo instante está atendiendo a un 5to objeto y por eso no le contesta. Procesamiento: Todo procesamiento cubre dentro del objeto y es activado por mensajes hacia ese objeto. Hay un conjunto de objetos básicos y primitivos que reciben mensajes, que efectúan un proceso interno y retornan un resultado. De esta forma cualquier operación matemática por ejemplo, independientemente de su complejidad, puede ser traducido en operaciones elementales (+, -, *, /, =) sobre datos (enteros, flotantes, char, etc.). Uniformidad: Nada existe excepto objeto y mensaje. Todas las entidades son objeto desde la más simple, como las variables numéricas, hasta las entidades más complejas obstruidas del mundo real. Todas las operaciones necesarias serán reflejadas por mensajes desde un objeto a otro. Ciclo de vida: Un objeto nace cuando es creado a partir de su nacimiento. El objeto muestra un comportamiento que le es peculiar e integra una sociedad de objetos con los que interactuar. La vida del objeto tiene altas y bajas. El objeto está alto cuando está activo, es decir, recibe y atiende mensajes y está en baja cuando está en un estado de hibernación, que, aunque recibe los mensajes no los contesta. También un objeto no podrá atender un mensaje por estar demasiado ocupado, por estar atendiendo a otro y que, aunque no conteste está en alto. Filosofía y desarrollo: Se hacen atracción de objetos y se crean clases con determinadas características. En un primer nivel de de atracción se identifican las clases, de forma tal de que cada objeto pertenezca a una clase. En el segundo nivel de atracción, las clases identificadas muestran propiedades comunes que se les permite agrupar y de esta manera se establecen relaciones, superclase, clase y objetos. Glosario: 1. Abstracción - Sección BD/Programación En la programación orientada a objetos (POO), la abstracción es el proceso en el cual se separa las propiedades más importantes de un objeto, de las que no lo son. Es decir, por medio de la abstracción se define las características esenciales de un objeto del mundo real, los atributos y comportamientos que lo definen como tal, para después modelarlo en un objeto de software. En el proceso de abstracción no se debe preocupar por la implementación de cada método o atributo, solamente se debe definir de forma general. 2. Clase - Sección BD/Programación Es un molde o bien prototipo en donde se definen los atributos (variables) y las acciones (métodos) comunes de una entidad. Una clase (Class) es un "molde" a partir del cual se pueden crear objetos. Cuando creamos un objeto a partir de una clase, se dice que el objeto es de ese tipo, y se lo llama "instancia de la clase". Composición de la clase Toda clase está compuesta por datos, y por funciones que actúan sobre esos datos. La única forma de acceder a los datos internos de un objeto es a través de las funciones que fueron definidas sobre éste (concepto conocido como encapsulación). Además, esta agrupación de datos y funciones es fundamental, ya que, a donde quiera que vaya la clase, todo lo que necesite viajará con ella (lo que facilitará enormemente su reusabilidad). Toda clase contiene lo que se llama miembros, que pueden ser: • Campos • Propiedades • Métodos o funciones • Eventos El conjunto de estos cuatro tipos de miembros termina definiendo la funcionalidad de una clase, es decir, qué hace y cómo lo hace. 3. Encapsulación - Sección BD/Programación Consiste en mantener datos y métodos dentro de una única abstracción, donde la estructura interna es inaccesible para todos los objetos que se encuentran fuera de una interfaz interna. Actúa como una capsula que protege el código ya que sólo puede accederse desde el interior del objeto. Es decir, ningún objeto podrá modificar los datos de otro, sino solamente a través de los métodos que este provea. El rol de la encapsulación La idea de la encapsulación, es mantener los atributos de los objetos como privados y proporcionar acceso a los mismos a través de métodos públicos (métodos de acceso). Esta filosofía de programación proporciona grandes beneficios, entre los que cabría destacar: • Protección de datos "sensibles". • Facilidad y flexibilidad en el mantenimiento de las aplicaciones. 4. Herencia - Sección BD/Programación La herencia (Inherits o extends) significa que una clase adquiere la funcionalidad de otra de nivel superior, para luego potenciarla con características particulares. Para los fines prácticos de un lenguaje, la clase superior se conoce como clase base o superclase, y la clase que hereda de ella se conoce como clase derivada o subclase. Además, en la práctica, la herencia significa que la clase derivada tendrá todos los miembros (propiedades, métodos y eventos) de la clase base, y luego agregará los propios. Es unidireccional ya que un objeto puede heredar de un antepasado, pero nunca de su descendiente. Jerarquía de clases La herencia permite la transmisión de propiedades y métodos de un objeto a otro a través de la organización jerárquica de clases a la que pertenece. Al clasificarse, se obtiene una jerarquía de clases y surge la generalización y especialización. La herencia establece las relaciones entre clases (una o varias). La herencia permite crear otro objeto a partir de uno ya existente. Al tipo de objeto original se lo conoce como base o ascendente, mientras que el nuevo que hereda las características se lo llama derivada o descendente. La herencia es transitiva, esto significa que las características de un objeto se pueden transferir a otro, a través de una clase intermedia, es decir, si C es descendente de B y B es descendente de A entonces A le transmite características a C. Beneficios de la herencia Entre las principales ventajas que ofrece la herencia en el desarrollo de aplicaciones, están: • Reutilización de código. En aquellos casos donde se necesite crear una clase que, además de otros propios, deba incluir los métodos definidos en otra, la herencia evita tener que reescribir todos esos métodos en la nueva clase. • Mantenimiento de aplicaciones existentes. Utilizando la herencia, si se tiene una clase con una determinada funcionalidad y se tiene la necesidad de ampliar dicha funcionalidad, no se necesita modificar la clase existente (la cual se puede seguir utilizando para el tipo de programa para la que fue diseñada) sino que se puede crear una clase que herede a la primera, adquiriendo toda su funcionalidad y añadiendo la suya propia. 5. Mensaje - Sección Redes Unidad de información enviada entre equipos donde se ejecutan los servicios. El mensaje puede contener texto o datos binarios definidos por la aplicación remitente. Todos los mensajes, incluidos los de estado, se almacenan en colas en los equipos donde se ejecutan servicios de Message Queue Server. 6. Modelo orientado a objetos - Sección BD/Programación Es un modelo de administración de datos. Las bases de datos orientadas a objetos en lugar de incorporar tablas como lo hacen las relacionales, utilizan objetos. Los objetos de una base de datos tienen las mismas características conocidas de los objetos de los lenguajes orientados a objetos (herencia, polimorfismo, encapsulación, otros). Este modelo admite relaciones uno a varios, uno a uno, y varios a varios. El desarrollo de cualquier sistema consiste en realizar tres etapas: análisis, diseño y programación, en ese orden. En el método tradicional se realizan diagramas de relación, descomposición funcional y diagramas de dependencia entre procesos. Durante el proceso de análisis, en el modelo orientado a objetos, se realiza el modelado y la declaración de objetos. En el método tradicional se realizan diagramas de entradas y salidas, tablas y estructuras de datos y diagramas de acción. En el modelo orientado a objetos el manejo de los objetos está determinado por las implementaciones de los métodos detectados en el análisis. Esto quiere decir que, en el método tradicional, el análisis de diseño suele tener más fronteras bien definidas, mientras que en el modelo de objetos la frontera no está tan bien definida. Análisis de la estructura de objetos 1) Se identifican los tipos de objetos y sus asociaciones representados a través de un esquema de objetos. 2) Se organizan los tipos de objetos en subtipos y supertipos, indicando la jerarquía por medio de herencia. 3) Estudiar la composición de objetos complejos, definiendo el mecanismo que controla la naturaleza de los objetos que se encuentran dentro de otros objetos. Análisis del comportamiento 1) Se identifican que estados pueden tener los objetos. 2) Transiciones de estados: se determinan a través de un diagrama de cambios de estado del objeto. 3) Identificación de los eventos que ocurren. 4) Operaciones que se llevan a cabo. 5) Interacción entre objetos. 6) Reglas de activación que se utilizan para reaccionar ante un evento. 7) Representación de todas las operaciones mediante métodos. Este es el paso justo antes de generar código. Las limitaciones de los otros modelos Al intentar trabajar con sistemas de información geográfica o sistemas multimedia, los modelos (jerárquicos, de red o relacional) no se sienten demasiado cómodos e incluso algunos ni siquiera pueden soportarlos por, entre otros, los motivos que se enumeran a continuación: • La estructura de los objetos es más compleja; • Las transacciones son de larga duración; • Se necesitan nuevos tipos de datos para almacenar imágenes y textos; • Hace falta definir operaciones no estándar, específicas para cada aplicación. Todo esto sin contar con el hecho de que los lenguajes de programación orientados a objetos tienen un gran auge, y aprovechar una base de datos que comparta los mismos principios no es nada desdeñable. 7. Objeto - Sección Informática Entidad, como un archivo, carpeta, carpeta compartida, impresora u objeto de Active Directory, descrita por un conjunto de atributos diferenciado y con nombre. Por ejemplo, algunos atributos de un objeto archivo incluyen su nombre, ubicación y tamaño; entre los atributos de un objeto usuario de Active Directory se cuentan el nombre del usuario, su apellido y su dirección de correo electrónico. 8. Polimorfismo - Sección Redes Técnica avanzada de ocultación (stealth) empleada por algunos virus, que modifican su código de instrucciones para evitar su identificación. Se producen así distintas versiones de lo que, en realidad es el mismo virus. 9. POA - Sección BD/Programación (Programación Orientada a Aspectos) o también AOP por su sigla en inglés (AspectOriented Programming). El concepto de POA se desarrolló en los laboratorios de Xerox PARC en la década de 1990. El equipo también desarrollo el primer (y más popular) lenguaje de POA: AspectJ. Diferenciando POO de POA Un proyecto POO se crea a partir de varios archivos fuente, cada uno de los cuales implementa una o más clases. El proyecto también incluye clases que representan asuntos de transversalidad, como registro o almacenamiento de memoria caché. Un compilador procesa todas las clases y produce código ejecutable. En POA, un aspecto es un componente reutilizable que encapsula el comportamiento necesario para varias clases en el proyecto. La manera en la que efectivamente se procesan los aspectos depende de la tecnología POA que esté considerando. En general, se puede decir que el compilador no procesa de forma simple y directa los aspectos. Es necesaria una herramienta de tecnología específica adicional para modificar el código ejecutable para que este tome aspectos en cuenta. 10. Programación estructurada - Sección BD/Programación Significa escribir un programa de acuerdo a las siguientes reglas: 1) El programa tiene un diseño modular. 2) Los módulos están diseñados en forma descendente. 3) Cada módulo se codifica utilizando las 3 estructuras de control básicas que son: secuencia, selección y repetición. A su vez la programación estructurada incorpora: • Recursos abstractos • Diseño top-down • Estructuras básica Un cambio en la programación Desde sus inicios la programación estaba dedicada a procesos lineales (programación lineal), en los que las tareas se ejecutaban una a una en una secuencia preestablecida. Ese enfoque funcionó sin problemas durante los primeros años, hasta que los requerimientos comenzaron a crecer en tamaño y complejidad, y se volvió más difícil agregar adaptaciones y ampliaciones a los programas ya existentes. La programación estructurada atacó este problema, descomponiendo los procesos complejos en otros más sencillos (actividad conocida descomposición modular), y así permitió la reutilización de las partes comunes a toda una aplicación a través de procedimientos y funciones. 11. Orientación a objetos - Sección BD/Programación Representa el método para modelar con precisión el mundo real en las aplicaciones de software. La orientación a objetos es un concepto amplio que se utiliza para describir un conjunto de tecnologías que habilitan productos de software muy modulares y reutilizables. Tratando con objetos Las aplicaciones, los datos, las redes y los sistemas se tratan como objetos que se pueden mezclar y combinar de manera flexible en vez de tratarse como componentes de un sistema con relaciones integradas. Como resultado, una aplicación no necesita estar unida a un sistema o a datos determinados de una aplicación específica. Los cuatro conceptos centrales de la orientación a objetos son la encapsulación, el paso de mensajes, la herencia y el enlace en tiempo de ejecución. 12. Modularidad - Sección BD/Programación 1) La ventaja de esta técnica era que el programador podía desarrollar una función o procedimiento a su gusto, que una función o procedimiento tenía que ser una «caja negra» para el resto del mundo y que lo único que debían conocer era el formato de datos con que se invocaba. 2) Dentro de la programación orientada a objetos (POO), la modularidad juega un papel muy importante. Una vez que se ha representado una situación del mundo real en un programa, tenemos regularmente como resultado, un conjunto de objetos de software que constituyen la aplicación. Alterar clases sin perjudicar a otras La modularidad, nos permite poder modificar las características de la clase que definen a un objeto, de forma independiente de las demás clases en la aplicación. En otras palabras, si nuestra aplicación puede dividirse en módulos separados, normalmente clases, y estos módulos pueden compilarse y modificarse sin afectar a los demás, entonces dicha aplicación ha sido implementada en un lenguaje de programación que soporta la modularidad. 13. Subalgoritmo - Sección BD/Programación La experiencia ha demostrado que un problema complejo se resuelve mejor si se lo divide en pequeños problemas (subproblemas). En el diseño de algoritmos, también es válido este concepto, dividiendo a los mismos en subalgoritmos que van a servir de ayuda para la resolución de problemas complejos ("divide y reinarás/vencerás"). Se los puede probar en forma independiente y permiten que, diferentes diseñadores, trabajen simultáneamente, en cada uno de ellos. Divide y vencerás Por ejemplo, las acciones para escribir un informe, que pueden llegar a ser bastante complicadas, pueden organizarse como un subalgoritmo, separado de las acciones para calcular los datos que serán volcados en el mismo. Otra utilidad de los subalgoritmos surge del hecho que existen funciones de procesamiento que pueden utilizarse más de una vez en un mismo algoritmo como, así también, sirven para que otros algoritmos hagan uso de ellos. Estos subalgoritmos, se escriben una vez y luego son utilizados por todos aquellos algoritmos que requieran de ellos, por ejemplo, clasificar datos en orden ascendente o descendente, como así también las funciones internas (raíz cuadrada, seno, logaritmo, etc.). CONCLUSIÓN Apropiación de conceptos básicos de la programación orientada a objetos para una mayor comprensión y aplicación que permita tener unas bases sobre la estructura de la programación orientada a objetos. BIBLIOGRAFIA https://sena.territorio.la/content/index.php/institucion/Titulada/institution/SENA/Tecn ologia/228118/Contenido/OVA/CF16/index.html#/curso/tema2 https://www.glosarioit.com/Subalgoritmo