Subido por Jose Tovar

TALLER DE CONCEPTOS Y PRINCIPIOS DE PROGRAMACIÓN ORIENTADA A OBJETOS

Anuncio
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
Descargar