16 de junio 2022.
Examen ordinario
MATERIA: Análisis y Diseño Orientado a Objetos
ALUMNO: Aispuro Mendoza Julio César
GRADO Y GRUPO: 1-1
PROFESOR: LAMBERTO LÓPEZ LOPEZ
1. Elaborar diez preguntas del tema de análisis orientado a objetos y dar
respuestas a las diez preguntas .
1) ¿Qué es OOPS?
Es un modelo de programación informática que organiza el diseño de software en torno a datos u
objetos, en lugar de funciones y lógica.
2) ¿Cuales son conceptos básicos de OOPS?
La programación orientada a objetos se basa en los siguientes conceptos:
Clases de objetos.
Instancias de clases (objetos).
La encapsulación - una clase encapsula todos los campos y funciones que se realizan en los campos
de una clase. Los resultados de la encapsulación son:
Restricción para acceder a algunos de los datos del objeto desde fuera de la clase.
Agrupar datos a funciones dentro de una clase.
La encapsulación se describe en detalle en el tema "Encapsulación en C ++".
Polimorfismo - una forma de utilizar la misma interfaz para los diferentes tipos de datos. En
palabras simples, se puede describir como usar el mismo nombre para funciones miembro que
tienen diferentes argumentos. El polimorfismo no solo está relacionado con las funciones de los
miembros. Se trata con más detalle en "Polimorfismo C ++".
Herencia - una clase puede heredar algunas propiedades de otra clase. Esto significa que una clase
secundaria puede utilizar algunas de las funciones de la clase principal. Puede encontrar más
información sobre la herencia en Herencia de C ++.
Abstracción - Consiste en ocultar los detalles de algunos procesos y datos y representar solo la
información necesaria y el resultado fuera de la clase. La descripción detallada del concepto de
abstracción se puede encontrar en “Abstracción de C ++”.
Sobrecarga - representa una especie de polimorfismo. Existe la posibilidad de sobrecargar
funciones y operadores ya existentes para que funcionen con nuevos tipos de datos. La sobrecarga
se describe en "Sobrecarga de C ++"
Manejo de errores - algunos de los errores pueden aparecer en tiempo de ejecución. Debido a
esto, es necesario controlar los errores para que los programas sean seguros. El mecanismo de
manejo de errores de C ++ se describe en “Manejo de excepciones de C ++”.
3) ¿Qué es una clase?
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).
4) ¿Qué es un objeto?
Un ejemplo sencillo de un objeto, como decíamos antes, 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. Esto es lo que se define en muchos programas como
la definición de una clase, que es la definición global y genérica de muchos objetos.
5) ¿Qué es la encapsulación?
La encapsulación contiene toda la información importante de un objeto dentro del mismo y solo
expone la información seleccionada al mundo exterior. Esta propiedad permite asegurar que la
información de un objeto esté oculta para el mundo exterior, agrupando en una Clase las
características o atributos que cuentan con un acceso privado, y los comportamientos o métodos
que presentan un acceso público.
6) ¿Qué es el polimorfismo?
El polimorfismo consiste en diseñar objetos para compartir comportamientos, lo que nos permite
procesar objetos de diferentes maneras. Es la capacidad de presentar la misma interfaz para
diferentes formas subyacentes o tipos de datos. Al utilizar la herencia, los objetos pueden anular
los comportamientos principales compartidos, con comportamientos secundarios específicos. El
polimorfismo permite que el mismo método ejecute diferentes comportamientos de dos formas:
anulación de método y sobrecarga de método.
7) ¿Qué es la herencia?
La herencia define relaciones jerárquicas entre clases, de forma que atributos y métodos comunes
puedan ser reutilizados. Las clases principales extienden atributos y comportamientos a las clases
secundarias. A través de la definición en una clase de los atributos y comportamientos básicos, se
pueden crear clases secundarias, ampliando así la funcionalidad de la clase principal y agregando
atributos y comportamientos adicionales.
8) ¿Qué es la abstracción?
La abstracción es cuando el usuario interactúa solo con los atributos y métodos seleccionados de
un objeto, utilizando herramientas simplificadas de alto nivel para acceder a un objeto
complejo.En la programación orientada a objetos, los programas suelen ser muy grandes y los
objetos se comunican mucho entre sí. El concepto de abstracción facilita el mantenimiento de un
código de gran tamaño, donde a lo largo del tiempo pueden surgir diferentes cambios.
9) ¿Cómo se crean los programas orientados a objetos?
Resumiendo mucho, consistiría en hacer clases y crear objetos a partir de estas clases. Las clases
forman el modelo a partir del que se estructuran los datos y los comportamientos.•El primer y
más importante concepto de la POO es la distinción entre clase y objeto.
10) ¿Cuáles son los Beneficios de la programación orientada a objetos?
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 nos
permite construir sistemas más complejos y de una forma más sencilla y organizada.
2. Elaborar diez preguntas del tema Diseño Orientado a Objetos y dar
respuestas a las diez preguntas.
1) ¿Qué es el diseño orientado a objetos?
El diseño orientado a objetos (DOO) forma parte del desarrollo de software con el cual se busca
que los desarrolladores y programadores puedan planificar el código pensando en objetos y
responsabilidades en lugar de procedimientos.
2) ¿Cuáles son las características principales del diseño orientado a objetos?
Podemos señalar las siguientes:
*Los objetos vienen a ser en sí abstracciones del mundo real o entidades del sistema que están
administradas entre ellas mismas.
*Cada objeto es independiente y estos encapsulan propiamente el estado, al igual que la
representación de información.
*La funcionalidad del sistema es expresada en términos de servicios de los objetos propiamente.
*La comunicación de los objetos se lleva a cabo mediante el paso de parámetros y en sí, las áreas
de datos compartidas son eliminadas.
*Es posible que los objetos estén distribuidos y que puedan ejecutarse de manera secuencial o
también en paralelo.
3) ¿Cuáles son las ventajas de diseño orientado a objetos?
*Son fáciles de mantener. Los objetos vienen a representar entidades auto-contenidas.
*Pudiera haber un mapeo obvio entre lo que son las entidades del mundo real y los objetos
propios del sistema, esto para algunos de ellos.
*Los objetos vienen a ser propiamente componentes reutilizables.
4) ¿Cuáles son los Componentes del Diseño Orientado a Objetos?
*La identificación de objetos, sus atributos y servicios.
*La organización de objetos dentro de una jerarquía.
*La construcción de descripciones dinámicas de objetos que muestran como se usan los
Servicios.
*La especificación de interfaces de objetos.
5) ¿Qué es el modelo de diseño orientado a objetos?
El modelo del diseño puede verse en dos dimensiones distintas, como se ilustra en la figura. La
dimensión del proceso indica la evolución del modelo del diseño conforme se ejecutan las tareas
de éste como parte del proceso del software. La dimensión de la abstracción representa el nivel de
detalle a medida que cada elemento del modelo de análisis se transforma en un equivalente de
diseño y luego se mejora en forma iterativa.
6) ¿Cuáles son los modelos de diseños orientados a objetos?
Los modelos del diseño pueden ser estáticos y dinámicos.
7) ¿Cuáles son los diseños estadísticos?
Estructura de subsistemas y/o clases, y sus relaciones. Se describe la estructura estática (de datos),
de los objetos del sistema (identidad, atributos y operaciones) y también sus relaciones. El modelo
de objetos contiene diagramas de objetos. Un diagrama de objetos es un grafo cuyos nodos son
clases de objetos y cuyos arcos son relaciones entre las clases. El diagrama contiene clases de
objetos organizados en jerarquías que comparten una estructura y comportamiento comunes y
que están asociadas a otras clases. Estas clases definen los atributos que lleva cada instancia de
objeto y las operaciones que efectúa o sufre cada uno. En cada instancia de la clase se guardan los
valores de esos atributos.
8) ¿Cuáles son los diseños dinámicos?
Los Dinámicos Se describen las estructuras que muestran la interacción entre objetos. Ejemplos de
UML: diagramas de secuencia, diagramas de estado.
8) ¿Qué son los patrones del diseño orientado a objetos?
Son soluciones simples y elegantes a problemas específicos y comunes del diseño orientado a
objetos. Son soluciones basadas en la experiencia y que se ha demostrado que funcionan.
9) ¿Cómo se puede un patrón?
Podríamos definir un patrón de la siguiente manera:
“Un patrón describe un problema que ocurre de forma iterativa en nuestro entorno, también
describe la solución a dicho problema de tal forma que podemos usar la misma solución todas las
veces que sea necesario”.
10) ¿Cuáles son los los patrones?
Patrones estructurales:
Los patrones estructurales describen como los objetos y las clases pueden ser combinados para
formar estructuras más grandes, es decir, proporcionan los mecanismos para este hecho. La
diferencia entre el modelo de clases y el modelo de objetos es que las clases desarrollan la
abstracción con la ayuda de la herencia y como estos pueden ser más utilizados para proporcionar
más utilidad al programa de interfaz. Por otro lado los patrones estructurales describen como los
objetos pueden ser asociados y combinados para formar estructuras más grandes y más
complejas. Algunos de los patrones estructurales más utilizados son los siguientes: Patrón
Adaptador, Patrón Puente, Patrón Compuesto, Patrón Decorador, Patrón de Fachada, Patrón de
Peso Mosca, Patrón Apoderado.
Patrones de creación:
Los patrones de creación proporcionan ayuda a la hora de crear objetos, principalmente cuando
esta creación requiere tomar decisiones. La toma de decisiones utilizando patrones puede ser
dinámica. Estos patrones ayudan a estructurar y encapsular estas decisiones. En algunas ocasiones
existe más de un patrón que se puede aplicar a la misma situación. En otras ocasiones se pueden
combinar múltiples patrones convenientemente. Algunos de los patrones de creación más
utilizados son los siguientes:
Patrón de Fábrica Abstracta, Patrón Constructor, Patrón del Método de Fabricación, Patrón
Prototipo, Patrón de Instancia Única (Singleton).
Ejemplo de Patrón de Fábrica (Factory Pattern):
Patrones funcionales:
Los patrones funcionales tratan específicamente la comunicación entre los objetos.
Patrón de Cadena de Responsabilidad, Patrón de Comando, Patrón Intérprete, Patrón Iterador,
Patrón Mediador, Patrón Memento, Patrón Observador, Patrón de Estado, Patrón de Estrategia,
Patrón del Método Plantilla, Patrón Visitante.
Patrón de diseño Prototipo: Prototype
El patrón Prototype es un patrón de diseño creacional en el que los objetos se crean a partir de
una instancia prototípica, que es clonada para dar lugar a nuevos objetos.
Este patrón se usa en los siguientes casos:
Para evitar las subclases de un objeto creador como hace el patrón Abstract Factory.
Para evitar el costo inherente a la creación de un objeto nuevo mediante el operador new cuando
esto demasiado costoso para la aplicación.
11) ¿Cómo se describe un patrón de diseño?
Describe las clases que se requieren para implementar la solución
Se describen las clases responsables de la construcción de un objeto y su comportamiento.
Lineamientos que conduzcan a una implementación efectiva por el programador.
Se describen ejemplos de código fuente.
El programador deberá observar cada oportunidad en la que puedan reutilizarse patrones ya
existentes en vez de crear otros.