Bloque 3 tema 4
![]() |
![]() |
![]() |
Título del Test:![]() Bloque 3 tema 4 Descripción: Orientado a objetos Fecha de Creación: 2023/03/31 Categoría: Otros Número Preguntas: 98
|




Comentarios |
---|
NO HAY REGISTROS |
Teoría o conjunto de teorías cuyo núcleo central se acepta sin cuestionar y que suministra la base y modelo para resolver problemas y avanzar en el conocimiento. Paradigma. Teoremas. Bases. Teoría. El paradigma declarativo: Describe qué calcular sin indicar cómo. Describe qué calcular sin indicar cómo. Las variables son nombres asociados a definiciones, y una vez instanciadas (En los lenguajes de programación orientada a objetos un objeto es una instancia de una clase. Esto es, un miembro de una clase que tiene atributos) son inmutables. Las variables son nombres asociados a valores, y una vez instanciadas (En los lenguajes de programación orientada a objetos un objeto es una instancia de una clase. Esto es, un miembro de una clase que tiene atributos) son modificables. No existe sentencia de asignación, ni tampoco un orden de evaluación prefijado. No existe sentencia de negación, ni tampoco un orden de indexación prefijado. El control de flujo se suele asociar a la composición funcional, la recursividad y/o técnicas de reescritura y unificación. El control de flujo se suele asociar a la composición funcional, la redundancia y/o técnicas de relectura y unificación. En las variantes del paradigma, existen diversos grados de pureza. Las principales variantes son: paradigma lógico, funcional, lenguajes descriptivos y programación reactiva. La programación declarativa agrupa los siguientes paradigmas: Programación lógica: representamos los problemas por lógica matemática. Programación lógica: resolvemos los problemas por medio de la evaluación de funciones matemáticas. Programación funcional: resolvemos los problemas por medio de la evaluación de funciones matemáticas. Programación funcional: están creados para un propósito específico, son lenguajes descriptivos (HTML, CSS y SQL). Lenguajes de dominio específico (DSLs): están creados para un propósito específico, son lenguajes descriptivos (HTML, CSS y SQL). Lenguajes de dominio específico (DSLs): se combinan instrucciones imperativas para compilar o instalar una aplicación, con la descripción de dependencias entre componentes. (Ejemplo: los archivos make). Lenguajes híbridos: se combinan instrucciones imperativas para compilar o instalar una aplicación, con la descripción de dependencias entre componentes. (Ejemplo: los archivos make). Lenguajes híbridos: se representamos los problemas por lógica matemática. ESTRUCTURA DE UN PROGRAMA ORIENTADO A OBJETOS. el programa se organiza como un conjunto finito de objetos que contienen datos y métodos, (funciones miembro) que operan sobre esos datos y que se comunican entre sí mediante mensajes. el programa se organiza como un conjunto finito o infinito de objetos que contienen datos y clases, (funciones miembro) que operan sobre esos datos y que se comunican entre sí mediante mensajes. Las etapas necesarias para modelar un sistema y resolver un problema son: 1. 2. 3. 4. en software es una entidad individual de un sistema que guarda una relación directa con los objetos del mundo real. La correspondencia entre de programación y objetos del mundo real es el resultado práctico de combinar atributos y operaciones. objeto(s). clase(s). método(s). Un objeto tiene un estado, un comportamiento y una identidad: Estado. Es el conjunto de valores de todos los atributos de un objeto en un instante de tiempo determinado. El estado de un objeto tiene un carácter dinámico que varía a lo largo del tiempo. Estado. Es el conjunto de valores de todos los atributos de un objeto en el tiempo. El estado de un objeto tiene un carácter estático que no varía a lo largo del tiempo. Comportamiento. Es el conjunto de operaciones que se pueden realizar sobre un objeto. Las operaciones pueden ser de observación del estado interno del objeto (consultar el valor de un atributo), o bien de modificación de dicho estado (cambiar el valor de un atributo). El estado de un objeto evoluciona en función de la aplicación de sus operaciones. Estas operaciones se realizan tras la recepción de un mensaje o estímulo externo enviado por otro objeto. Comportamiento. Es el conjunto de operaciones que se pueden realizar sobre un objeto. Las operaciones pueden ser de influencia sobre el estado externo del objeto (consultar el valor de una clase), o bien de modificación de dicho estado (cambiar el valor de una clase). El estado de un objeto evoluciona en función de la observación de sus operaciones. Estas operaciones se realizan tras la recepción de un mensaje o estímulo externo enviado por otro objeto. Identidad. Permite diferenciar los objetos de modo no ambiguo. Es independiente de su estado y permite distinguir dos objetos idénticos en cuanto a los valores de sus atributos. Cada objeto posee su propia identidad y ocupa su propia posición en la memoria de la computadora. Identidad. Permite diferenciar los objetos de modo ambiguo. Depende de su estado y permite distinguir dos o más objetos idénticos en cuanto a los valores de sus atributos. Cada identidad posee uno o varios objetos y ocupa su propia posición en la memoria de la computadora. Cuál es verdadera. Cuando se diseña un problema en un lenguaje orientado a objetos, se debe pensar en dividir dicho problema en objetos. Dicho de otro modo, es preciso identificar y seleccionar los objetos del dominio del problema de modo que exista una correspondencia entre los objetos desde el punto de vista de programación y los objetos del mundo real. Cuando se diseña un problema en un lenguaje orientado a objetos, se debe pensar en dividir dicho problema en clases de objetos. Dicho de otro modo, es preciso identificar y seleccionar los objetos del dominio del problema de modo que exista una correspondencia entre los objetos desde el punto de vista de programación y los objetos del mundo real para después asociarlos en base a sus características comunes. Ejemplos de POO. ADA 95. Ruby. PHP 4.0. PHP 3.0. C++. C#. Python. PHP. JavaScript. Vata. Ejemplos de POO. Kotlin. Linde. OCALM. OCT. Vala. Objective C. Object C. Object Pascal. Pascal. VisualBasic 6.0. Ejemplos de POO. Java. Vata. CLIPS. Simula. Smalltalk. ActionScript. Delphi. Scala. Object simula. CLARK. Ejemplos de POO. Pauscal. PowerBuilder. Eiffel. Perl. Visual FoxPro. Visual FoxO. Object Perl. Canonics. PHP 7.0. Northampton. de los primeros LPOO con tipado dinámico. Es considerado un "mundo virtual de objetos" donde cualquier entidad es modelada como un objeto. Smalltalk. Scala. LPOO puro; cada valor es un objeto. El tipo y comportamiento de los objetos se describe por medio de clases y traits. La abstracción de clases se realiza extendiendo otras clases y usando un mecanismo de composición basado en mixins como un reemplazo limpio de la herencia múltiple. Scala. Smalltalk. Un ... de software es un elemento de un sistema que ofrece un servicio predefinido, y es capaz de comunicarse con otros componentes. componente. elemento. objeto. Un ... es un objeto escrito de acuerdo a unas especificaciones, debe ser diseñado e implementado de tal forma que pueda ser reutilizado en muchos programas diferentes, adquiriendo la característica de reusabilidad. componente. comportamiento. atributo. canon. Esta capacidad de ..., es una característica importante de los componentes de software de alta calidad. Un componente. reusabilidad (reusability). recursividad (recursivity). renderización (rendering). Requiere gran esfuerzo y atención escribir un componente que es realmente reutilizable. El componente debe estar: Completamente documentado. Documentado en sus principales funciones y características. Probado intensivamente. Probado en, al menos, dos ocasiones. Debe ser robusto, comprobando la validez de las entradas. Debe ser ligero, comprobando la agilidad de las entradas. Debe ser capaz de pasar mensajes de error apropiados. Debe ser capaz de pasar mensajes orientativos apropiados. Diseñado pensando en que será usado de maneras imprevistas. Diseñado pensando en que será usado de maneras ya previstas. es la petición que enviamos a un objeto para que se comporte de una determinada manera, es decir, que realice una acción. comportamiento. mensaje. respuesta. requerimiento. Cuál es verdadera. En respuesta al mensaje, el objeto receptor se comportará de una determinada forma. “El mensaje invoca a un método que realizará la acción sobre el objeto”. Sintaxis: <Variable_Objeto>.<Nombre_Método> ( [<Lista de Parámetros> ] );. En respuesta al mensaje, el objeto receptor se comportará siempre de una determinada forma. “El mensaje invoca a un objeto externo que realizará la acción sobre el objeto”. Sintaxis: <Nombre_Objeto>.<Variable_Método> ( [<Lista de Parámetros> ] );. Cuáles son verdaderas. Cuando el objeto receptor recibe el mensaje, comienza la ejecución del algoritmo contenido dentro del método invocado, recibiendo y/o devolviendo los valores de los parámetros correspondientes, si los tiene ya que son opcionales: ( [ ] ). Cuando el objeto receptor recibe el mensaje, comienza la ejecución del algoritmo contenido dentro de la clase invocada, recibiendo y/o devolviendo los valores de los parámetros correspondientes, si los tiene ya que no son opcionales: ( [ ] ). Cada mensaje consta de tres partes: Identidad del objeto al que va dirigido el mensaje. Operación solicitada (método). Información adicional (argumentos), necesaria para poder ejecutar el método. Cada mensaje consta de tres partes: Valor del objeto al que va dirigido el mensaje. Operación solicitada (método). Combinación en una única unidad (objeto) tanto los datos como las funciones que los manipulan. Mediante el mensaje podemos: Modelar los objetos del mundo real de un modo mucho más eficiente que con funciones y datos. Combinar en una única unidad (objeto) tanto los datos como las funciones que los manipulan. Preocuparnos de qué hace el objeto sin preocuparnos de cómo lo hace. Mediante el mensaje podemos: Visualizar o enumerar el valor o valores del objeto al que va dirigido el mensaje. Combinar en una única unidad (objeto) tanto los datos como las funciones que los manipulan. Preocuparnos de qué hace el objeto procurando saber cómo lo hace. es el centro de la programación orientada a objetos. Un objeto es algo que se visualiza, se utiliza y que juega un papel o un rol. Objeto. Clase. Método. Comportamiento. Cuáles son verdaderas con respecto a los objetos. Cuando se programa de modo orientado a objetos se trata de descubrir e implementar los objetos que juegan un rol en el dominio del problema del programa. Cuando se programa de modo orientado a objetos se trata de descubrir e implementar los objetos que juegan un rol en el paradigma del problema del programa. La estructura interna y el comportamiento de un objeto, en consecuencia, no son prioritarios durante el modelado del problema (abstraemos las particularidades internas del objeto). La estructura interna y el comportamiento de un objeto, en consecuencia, no son prioritarios durante el modelado del problema (abstraemos las particularidades internas del objeto). Almacena unos valores, se denominan atributos, variables o propiedades. Almacena unos valores, se denominan métodos, variables o comportamientos. Pueden realizar acciones, que, se denominan: servicios, variables, procesos, procedimientos u atributos. Pueden realizar acciones, que, se denominan: servicios, funciones, métodos, procedimientos u operaciones. Un objeto no tiene que ser necesariamente algo concreto o tangible. Puede ser totalmente abstracto e incluso describir un proceso. Un objeto tiene que ser algo concreto o tangible. No puede ser totalmente abstracto, pero puede describir un proceso. Una asociación de senderismo podría ser un objeto. Los atributos podrían ser: Nombre: Asociación de Senderismo Amigos del Calvario. Miembros: 200. Ubicación de la sede: Villafranca de Córdoba. Los atributos podrían ser el nombre, número de miembros, la ubicación de la sede. Los métodos podrían ser convocar salida, añadir miembro, dar de baja a un miembro, etcétera. Los métodos podrían ser el nombre, número de miembros, la ubicación de la sede. Una instancia podría ser: Nombre: Asociación de Senderismo Amigos del Calvario. Miembros: 200. Ubicación de la sede: Villafranca de Córdoba. Una instancia podría ser convocar salida, añadir miembro, dar de baja a un miembro, etcétera. Los fundamentales elementos de un objeto son tres: Estado. Instancia. Comportamiento: El conjunto de operaciones que se pueden realizar sobre un objeto en un momento dado. Comportamiento: El conjunto de operaciones que se pueden realizar sobre un objeto frente a cualquier estímulo. Identidad. Atributo. En programación orientada a objetos, las operaciones definidas para los objetos, se denominan. Métodos. Comportamientos. Clases. Dominios. Cuáles afirmaciones son verdaderas con respecto a los métodos. Los métodos son subrutinas de manipulación de dichos datos, implementan la funcionalidad asociada al objeto. Los métodos son subrutinas de comportamiento y anidación de dichos datos, implementan la clase asociada al objeto. Los métodos, son el equivalente a las funciones en programación estructurada, con la diferencia de que es posible acceder a las variables de la clase de forma implícita o incluida. Los métodos, son el equivalente a las funciones contenidas en las bibliotecas en programación estructurada, con la diferencia de que no es posible acceder a las variables de la clase de forma implícita o excluida. Cuando se llama a un método de un objeto, se interpreta como el envío de un mensaje a dicho objeto. Cuando se llama a un método de un objeto, se interpreta como la recepción de un mensaje a dicho objeto. Un programa orientado a objetos se forma enviando mensajes a los objetos, que a su vez envían mensajes a otros objetos. Un programa orientado a objetos se forma recepcionando mensajes delos objetos, que a su vez recepcionan mensajes de otros objetos. Todos los objetos del mismo tipo se agrupan en .... Un(a) ..., es una plantilla con un modelo predefinido, para la creación de objetos de datos de determinado tipo. Clases. Métodos. Dominios. Cuáles afirmaciones son verdaderas con respecto a las clases. Una clase es la implementación de un tipo abstracto de dato y describe no solo los atributos (datos) de un objeto, sino también sus operaciones (comportamiento). Una clase es la implementación de un tipo tangible de dato y describe no solo los atributos (datos) de un objeto, sino también sus métodos (funciones). Una clase es un conjunto de objetos con propiedades comunes. Una clase es un conjunto de objetos con propiedades exclusivas. Una clase puede tener una representación (meta-objeto) en tiempo de ejecución, proporcionando apoyo en tiempo de ejecución para la manipulación de los datos relacionados con la clase. Una clase puede tener una representación (pseudo-objeto) tras el tiempo de ejecución, proporcionando apoyo en tiempo de respuesta para la manipulación de los datos relacionados con la clase. Una clase puede tener elementos privados, por tanto, cuando una clase hereda de otra, todos los elementos privados de la clase base no son accesibles a la clase derivada. Una clase puede tener elementos privados, por tanto, cuando una clase hereda de otra, todos los elementos privados de la clase base son accesibles a la clase derivada. Cada objeto creado a partir de la clase se denomina instancia de la clase. Cada objeto creado a partir de la clase se denomina elemento de la clase. Cada clase define: Un conjunto de variables. Un conjunto de condiciones. El estado. Las instancias. El comportamiento: métodos apropiados para operar con dichos datos. El comportamiento: métodos apropiados para operar en el tiempo. Componentes Las clases se componen de “miembros” (elementos) de varios tipos: Campos de datos: almacenan el estado de la clase por medio de “variables o miembros”. Pueden estar almacenados en variables, o en estructuras más complejas como son: uniones, structs e incluso otras clases. Campos de datos: implementan la funcionalidad asociada al objeto. Cuando se desea realizar una acción sobre un objeto, se dice que se le manda un mensaje invocando a este que realizará la acción. Las “propiedades”: almacenan el estado de la clase por medio de “variables o miembros”. Pueden estar almacenados en variables, o en estructuras más complejas como son: uniones, structs e incluso otras clases. Las “propiedades”: son los atributos de la computadora. Debido a que es común que las variables miembro sean privadas, para controlar el acceso y mantener la coherencia, surge la necesidad de permitir consultar o modificar su valor, mediante pares de métodos: GetVariable y SetVariable. Métodos en las clases: implementan la funcionalidad asociada al objeto. Cuando se desea realizar una acción sobre un objeto, se dice que se le manda un mensaje invocando este que realizará la acción. Métodos en las clases: son los atributos de la computadora. Debido a que es común que las variables miembro sean privadas, para controlar el acceso y mantener la coherencia, surge la necesidad de permitir consultar o modificar su valor, mediante pares de métodos: GetVariable y SetVariable. Struct. es una declaración de tipo de datos compuestos que define una lista de variables agrupadas físicamente con un solo nombre en un bloque de memoria. es una declaración de tipo de datos compuestos que define una lista de variables agrupadas lógicamente con varios nombre en uno o más bloques de memoria. es una declaración de tipo de datos compuestos que define una lista de variables agrupadas lógicamente con varios nombres en un bloque de memoria. es el resultado “crear” una clase, su realización específica u ocurrencia de una determinada clase, se denomina ...ar una clase. Instancia. Dominio. Ocurrencia. Constructo. Qué afirmaciones son verdaderas con respecto a las instancias de las clases. Una clase describe un objeto, (en la práctica múltiples objetos), mediante una serie de métodos y datos que resumen las características de este objeto. Por tanto, una clase es un tipo de dato, de variables que denominamos instancias. Una clase describe multiples objetos, (en la práctica un objeto), mediante una serie de métodos y datos que definen todas las características de este objeto. Por tanto, una clase es un tipo de objeto, de variables que denominamos atributos. Definir clases permite trabajar con código reutilizable. Una clase crea una instancia, que toma el patrón de la clase padre, aunque con variables independientes, de esta forma se reutiliza el código. Definir clases permite trabajar con código de un solo uso. Una clase crea una instancia, que toma el patrón de la clase padre, aunque con variables dependientes, de esta forma cada instancia es única. En los lenguajes de programación orientada a objetos, podemos decir, que un objeto es una instancia de una clase. Las instancias son la implementación de los objetos descritos en una clase. En los lenguajes de programación orientada a objetos, podemos decir, que una clase es una instancia de un objeto. Las instancias son la implementación de las clases descritos en un objeto. Estas instancias constan de atributos descritos en la clase y se pueden manipular con las operaciones definidas en la propia clase. En un lenguaje de programación OO, objeto e instancia son términos sinónimos. Estas instancias constan de comportamientos descritos en la clase y no se pueden manipular con las operaciones definidas en la propia clase, sino por las suyas propias. En un lenguaje de programación OO, objeto e instancia son términos parecidos pero sinónimos debido a diversos matices que los diferencian. Qué afirmaciones son verdaderas con respecto a las instancias de las clases. Cuando se declara una variable de tipo “Automóvil”, se está creando una instancia (objeto) de la clase “Automóvil”. Cuando se declara una clase de tipo “Automóvil”, se está creando una instancia (objeto) de la clase “Automóvil”. Para poder utilizar una clase en un programa, hay que instanciarla. Para poder utilizar una clase en un programa, hay que definir sus métodos primero, antes de instanciarla. Instancia (instance) de una clase: todo objeto que derive de algún otro, es la particularización, realización específica u ocurrencia de una determinada clase. (Todos los objetos son instancias de algún otro, menos la clase Object que es la madre de todas). Instancia (instance) de una clase: todo objeto que derive de algún otro, es la particularización, realización específica u ocurrencia de una determinado objeto. (Todos los objetos son instancias de algún otro, menos la clase OB que es la madre de todas). Instanciar una clase: es crear un nuevo objeto concreto de la misma, el objeto creado ya es una entidad concreta creada, a partir de la plantilla que es la clase. Este nuevo objeto creado, tiene ya "existencia" real, ocupa memoria y se puede utilizar en el programa. Instanciar una clase: es crear un nuevo objeto concreto de la misma, el objeto creado será una entidad concreta creada tras la posterior definición de sus métodos, a partir de la plantilla que es la clase. Este nuevo objeto creado, tiene ya "existencia" real, no ocupa memoria y se puede utilizar en el programa. Las clases de objetos son fundamentales, permiten abstraer los datos y sus operaciones asociadas al modo de una caja negra. Las clases de objetos son opcionales, permiten abstraer los datos, pero no sus operaciones asociadas, al modo de una caja negra. Qué afirmaciones son verdaderas con respecto a las instancias de las clases. Un progreso importante en la historia de los lenguajes de programación se produjo cuando se comenzó a encapsular o empaquetar diferentes propiedades en un tipo de dato. Un progreso importante en la historia de los lenguajes de programación se produjo cuando se comenzó a dividir o emancipar las diferentes propiedades de un tipo de dato. Las estructuras de datos permiten a una variable contener todas las propiedades relacionadas con ella. Las estructuras de datos permiten a una variable contener todas las propiedades relacionadas con ella menos las privadas de la clase superior. aunque en las estructuras y registros se pueden almacenar las propiedades individuales de los objetos, no pueden representar qué hacer con estos objetos (acelerar, frenar, etcétera). Por lo tanto, se necesita que estas operaciones también se incorporen al objeto. aunque en las estructuras y registros se pueden almacenar las propiedades individuales de los objetos, pueden, a su vez, representar qué hacer con estos objetos (acelerar, frenar, etcétera). Por lo tanto, no se necesita que estas operaciones también se incorporen al objeto. El tipo abstracto de datos (TAD) describe los atributos de un objeto y también su comportamiento (operaciones o funciones). El término tipo abstracto de dato se consigue en programación orientada a objetos con el término clase. El TAD se corresponde con la clase en POO. El tipo abstracto de datos (TAD) describe los atributos de un objeto y pero no su comportamiento (operaciones o funciones). El término tipo abstracto de dato se consigue en programación orientada a objetos con el término método. El TAD no se corresponde con la clase en POO. Cuál es verdadera con respecto al LOO. La mayoría de los lenguajes de programación actuales, incluyen bibliotecas o librerías. También permiten al usuario la creación de sus propias bibliotecas. Todos los lenguajes de programación actuales, incluyen bibliotecas o librerías. También hay algunos que permiten al usuario la creación de sus propias bibliotecas. El lenguaje de Programación Orientado a Objetos, se basa en varias técnicas del sexenio: Herencia (generalización). Abstracción. Polimorfismo. Acoplamiento. Cohesión. Encapsulamiento. División. Definición de clases y métodos. Acotamiento. Subdivisión. Es uno de los conceptos más importantes del paradigma orientado a objetos. Herencia. Abstracción. Polimorfismo. Subdivisión. Encapsulamiento. Cuáles afirmaciones son correctas sobre la herencia. Es una abstracción que permite la reutilización de código, y, además, habilita las capacidades del polimorfismo, a través de la sobre escritura de métodos. Es una abstracción que permite la reutilización de código, pero no habilita las capacidades del polimorfismo, sino a través de la sobre escritura de métodos. A través de ella, los diseñadores pueden crear nuevas clases partiendo de una clase o de una jerarquía de clases preexistente (ya comprobadas y verificadas) evitando con ello el rediseño, la modificación y verificación de la parte ya implementada, una clase se deriva de otra, de manera que extiende su funcionalidad. A través de ella, los diseñadores pueden crear nuevos métodos partiendo de una clase o de una jerarquía de clases preexistente (ya comprobadas y verificadas) evitando con ello el rediseño, la modificación y verificación de la parte ya implementada, un método se deriva de una clase, de manera que extiende su funcionalidad. La herencia facilita la creación de objetos a partir de otros ya existentes e implica que una subclase obtiene todo el comportamiento (métodos) y eventualmente los atributos (variables) de su superclase. La herencia hace posible la creación de objetos a partir de otros ya existentes e implica que una subclase obtiene la parte fundamental del comportamiento (métodos) y todos los atributos (variables) de su superclase. En los lenguajes que cuentan con un sistema de tipos fuerte y estrictamente restrictivo con el tipo de datos de las variables, la herencia suele ser un requisito fundamental para poder emplear el Polimorfismo, al igual que un mecanismo que permita decidir en tiempo de ejecución qué método debe invocarse en respuesta a la recepción de un mensaje, conocido como enlace tardío o enlace dinámico. En los lenguajes que cuentan con un sistema de tipos flexible y suficientemente maleable con el tipo de datos de las variables, la herencia suele ser un requisito opcional para poder emplear el Polimorfismo, al igual que un mecanismo que permita decidir en tiempo de ejecución qué método no debe invocarse en respuesta a la recepción de un mensaje, conocido como enlace tardío o enlace dinámico. Las clases pueden dividirse en subclases. Las clases no pueden dividirse. Cuáles afirmaciones son correctas sobre la herencia. La clase de la que se hereda se suele denominar clase principal, clase base, clase padre, superclase o clase ancestro (el vocabulario que se utiliza suele depender en gran medida del lenguaje de programación). La clase de la que se hereda se suele denominar clase principal, clase primigenia, clase padre, clase primaria o clase ancestro (el vocabulario que se utiliza suele depender en gran medida del lenguaje de programación). Las subclases también se denominan clases derivadas. Las subclases también se denominan clases hijas. Cada subclase comparte características con la clase de la que deriva (por ejemplo, el material del que están hechos, el tamaño, el precio, etcétera). Cada clase padre contiene todas las características de sus subclases (por ejemplo, el material del que están hechos, el tamaño, el precio, etcétera). Además, cada subclase tendrá sus propias características (la subclase “armario” tendrá el atributo “número de puertas” y la silla el “número de patas”). Además, cada subclase tendrá exclusivamente las características de la clase de la que deriva (la subclase “armario” tendrá el atributo “número de puertas” y la silla el “número de patas”). Hay dos tipos de herencias: simple y múltiple. Hay dos tipos de herencias: única y diversa. Cuáles afirmaciones son correctas sobre la herencia. Herencia simple. Una clase sólo puede derivar de otra (solo puede tener una superclase). Herencia simple. Una clase puede derivar de varias (puede tener más de una superclase). Herencia múltiple. Una clase deriva de dos o más clases, (puede tener más de una superclase). No todos los lenguajes POO ofrecen esta posibilidad. Herencia múltiple. Una clase deriva de dos o más clases, (puede tener más de una superclase). Todos los lenguajes POO ofrecen esta posibilidad. Lenguajes que soportan herencia múltiple en su mayor parte son: C++, Centura SQL Windows, CLOS, Eiffel, Object REXX, Perl y Python. Lenguajes que soportan herencia múltiple en su mayor parte son: C#, Object SQL Windows, CLOS, Eiffel, Object REXX, Python y Java. La herencia múltiple es una herramienta muy potente, pero puede producir problemas, como un conflicto de nombres cuando el mismo nombre se utiliza en dos o más clases. Por eso algunos lenguajes no la implementan. La herencia múltiple es una herramienta muy potente que ayuda a la prevención de problemas, como un conflicto de nombres cuando el mismo nombre se utiliza en dos o más clases. Por eso la mayoría de lenguajes la implementan. En programación orientada a objetos, la herencia es, después de la agregación o composición, el mecanismo más utilizado para alcanzar algunos de los objetivos más preciados en el desarrollo de software como lo son la reutilización y la extensibilidad. En programación orientada a objetos, la herencia es, antes incluso que la agregación o composición, el mecanismo más utilizado para alcanzar algunos de los objetivos más preciados en el desarrollo de software como lo son la revisión y la durabilidad. La herencia modela el hecho de que estos objetos tienden a organizarse en jerarquías. Esta jerarquía, desde el punto de vista del modelado, se denomina relación de. Generalización. Generación. Supremacía. Objetivación. La relación de generalización se define con el predicado. Es un. Está en. Deriva de. Pertenece a. la herencia es la relación. De generalización. Primaria. Objetiva. Múltiple. Ejemplo de relación de generalización. Una cama es un mueble. La tierra pertenece al sistema solar. El móvil está en la mesa. El complemento directo deriva del predicado. Cuáles afirmaciones son correctas sobre la generalización. Cada clase derivada hereda las características de la clase base y cada clase derivada añade sus propias características (atributos y operaciones). Cada clase base contiene todas las características de las clases derivadas y cada clase base añade sus propias características (atributos y operaciones). Las clases bases pueden a su vez ser también subclases o clases derivadas de otras superclases o clases base. Las clases bases no pueden a su vez ser subclases o clases derivadas de otras superclases o clases base. Una generalización es una relación de herencia entre dos clases. Permite a una clase heredar atributos y operaciones de otra clase. Su implementación en un lenguaje orientado a objetos es la herencia. Una generalización es una relación de herencia entre dos o más clases. Permite a una clase heredar atributos y operaciones de otra clase. Su implementación en un lenguaje orientado a objetos es la relación. Es la “relaciónX” que existe entre una entidad y los subtipos de entidad más específicos que dependen esa “relacionX”. Se representa mediante un triángulo invertido. Ejemplo: los tipos conserje y recepcionista obteniendo el supertipo empleado. Es la “relaciónX” que existe entre una entidad y los subtipos de entidad más específicos que dependen esa “relacionX”. Se representa mediante un triángulo. Ejemplo: los tipos conserje y recepcionista obteniendo el supertipo empleado. La herencia nos permite abstraer un tipo de entidad de nivel superior (supertipo) a partir de varios tipos de entidad (subtipos); en estos casos los atributos comunes y relaciones de los subtipos se asignan al supertipo. La herencia nos permite abstraer un tipo de entidad de nivel superior (supertipo) a partir de varios tipos de entidad (subtipos); en estos casos los atributos comunes y relaciones de los subtipos se asignan a los subtipos. Es la relación opuesta a la generalización. Se puede definir con la relación “es un”. Esta relación es transitiva. Especialización. Especificación. Conceptualización. Connotación. Cuál es una relación transitiva. Generalización. Especialización. Conceptualización. Jerarquización. Perro: Un perro es un canino. Un canino es un mamífero. Tenemos que: Un perro es un mamífero. Relación de especialización. Relación de generalización. los tipos conserje y recepcionista obteniendo el supertipo empleado. Relación de generalización. Relación de especialización. es la propiedad que considera los aspectos más significativos o notables de un problema y expresa una solución en esos términos, omitiendo la información no relevante para simplificar el problema. La abstracción. La conceptualización. La especialización. La especificación. La generalización. Qué afirmaciones son verdaderas con respecto a la abstracción. La abstracción se representa con el diseño de una clase que implementa la interfaz correspondiente. La abstracción posee diversos grados, denominados niveles de abstracción, que ayudan a estructurar la complejidad intrínseca que poseen los sistemas del mundo real. La abstracción se representa con el diseño de una relación que implementa la interfaz correspondiente. La abstracción posee diversos niveles, denominados grados de abstracción, que ayudan a estructurar la complejidad intrínseca que poseen los sistemas del mundo real. En el análisis de un sistema hay que concentrarse en ¿qué hace? y no en ¿cómo lo hace?. En el análisis de un sistema hay que concentrarse en ¿cómo lo hace? y no en ¿qué hace?. En programación se utiliza la abstracción para definir funciones o clases. Por ejemplo, podríamos utilizar la función para el cálculo del coseno. En programación se utiliza la abstracción para definir relaciones o métodos. Por ejemplo, podríamos utilizar la clase para el cálculo del coseno. Siempre que la llamada a la función y los parámetros no cambien, no nos importa cómo se haya codificado internamente. Incluso podríamos modificarla y no tendría repercusión para los programas y usuarios que la utilizan (siempre que se mantenga la misma interfaz). Siempre que la llamada a la función y los parámetros no cambien, nos importa cómo se haya codificado internamente. Si la modificamos tendría repercusión para los programas y usuarios que la utilizan (siempre que se mantenga la misma interfaz). es una técnica usada en programación para desacoplar una abstracción de su implementación, de manera que ambas puedan ser modificadas independientemente sin necesidad de alterar por ello la otra. Bridge, también conocido como Handle/Body. Carousel, también conocido como Peer/Body. Loopback, también conocido como Handle/Case. Footsteps, también conocido como Peer/Case. se desacopla una abstracción de su implementación para que puedan variar independientemente. Bridge. Loopback. Gateway. Footsteps. Aplicabilidad, se usa el patrón Bridge cuando: Se desea evitar un enlace permanente entre la abstracción y su implementación. Esto puede ser debido a que la implementación debe ser seleccionada o cambiada en tiempo de ejecución. Se desea enviar un enlace simbólico entre la abstracción y su aplicación. Esto puede ser debido a que la aplicación debe ser seleccionada o cambiada en tiempo de programación. Tanto las abstracciones como sus implementaciones deben ser extensibles por medio de subclases. En este caso, el patrón Bridge permite combinar abstracciones e implementaciones diferentes y extenderlas independientemente. Tanto las abstracciones como sus implementaciones deben ser generalizadas en una superclase. En este caso, el patrón Bridge permite combinar abstracciones e implementaciones diferentes y unirlas independientemente. Cambios en la implementación de una abstracción no deben impactar en los clientes, es decir, su código no debe tener que ser recompilado. Cambios en la implementación de una abstracción deben impactar en los clientes, es decir, su código debe ser recompilado. Se desea compartir una implementación entre múltiples objetos (quizá usando contadores), y este hecho debe ser escondido a los clientes. Se desea compartir una implementación entre múltiples objetos (quizá usando contadores), y este hecho debe ser mostrado a los clientes. Un objeto puede presentar diferentes comportamientos. Polimorfismo. Comportamiento múltiple. Generalización. Especialización. es la propiedad por la cual un mismo mensaje puede originar conductas completamente diferentes al ser recibido por diferentes objetos. Polimorfismo. Bridge. Generalización. Multiplicidad. Qué afirmaciones son verdaderas con respecto al polimorfismo. Es la capacidad de una operación, de ser interpretada por el propio objeto que lo invoca, es decir, permite a una operación (función), tener el mismo nombre en clases diferentes, y que actúe de modo diferente en cada una de ellas. Es la capacidad de una operación, de ser interpretada por la propia clase que lo invoca, es decir, permite a una operación (método), tener el mismo nombre en las mismas clases, y que actúe de modo diferente. Podemos enviar mensajes sintácticamente iguales a objetos de tipos distintos. El único requisito que deben cumplir los objetos que se utilizan de manera polimórfica es saber responder al mensaje que se les envía. Podemos enviar mensajes sintácticamente diferentes a objetos del mismo tipo. El único requisito que deben cumplir los mensajes que se utilizan de manera polimórfica es saber responder al objeto que se les envía. Esto es común en el mundo real, ya que una misma operación se realiza de forma diferente dependiendo del objeto al que se aplique. Esto es común en el mundo real, ya que una misma operación se realiza de la misma forma sin depender del objeto al que se aplique. El método encender puede actuar de muchas formas diferentes según el objeto: Encender un ordenador. Encender una cerilla. Encender los ánimos. El método encender puede actuar de la misma forma en múltiples objetos: Encender un ordenador. Encender una cerilla. Encender los ánimos. La apariencia del código puede ser muy diferente dependiendo del lenguaje que se utilice, más allá de las obvias diferencias sintácticas y tendrán un comportamiento similar. La apariencia del código puede ser muy similar dependiendo del lenguaje que se utilice, más allá de las obvias diferencias sintácticas, y actuarán diferente. es una propiedad que deriva del polimorfismo. Se puede aplicar sobre operadores y funciones. En LPOO, es la posibilidad de tener dos o más funciones con el mismo nombre, pero funcionalidad diferente. Mimetismo. Sobrecarga. Redundancia. Concordancia. dos o más funciones con el mismo nombre realizan acciones diferentes. El compilador usará una u otra dependiendo de los parámetros usados. A esto se llama también ... de funciones. Sobrecarga. Polimorfismo. Concordancia. Mimetismo. Qué afirmaciones son verdaderas con respecto a la sobrecarga. También existe la sobrecarga de operadores que al igual que con la sobrecarga de funciones se le da más de una implementación a un operador. También existe la sobrecarga de operadores que al igual que con la sobrecarga de funciones se le da menos de una implementación a un operador. El mismo método dentro de una clase permite hacer cosas distintas en función de los parámetros. Distintos métodos dentro de una clase permite hacer cosas distintas en función de la clase. Usamos los operadores o funciones de forma diferente dependiendo de los objetos sobre los que actúa. Usamos los operadores o funciones de la misma forma dependiendo de los objetos sobre los que actúa. Permite declarar y definir dos o más métodos con el mismo nombre, pero distintos argumentos (parámetros diferentes en cantidad y/o tipo). Permite declarar y definir dos o más métodos con los mismos argumentos, pero distinto nombre (parámetros iguales en cantidad y/o tipo). Ejemplos sobrecarga de funciones Ejemplo 1: imaginemos que tenemos un método que suma dos números y devuelve el resultado. Entero suma (entero A, entero B) { suma = A + B Return suma } ¿Qué pasaría si queremos sumar dos números con decimales (float)?. Podemos sobrecargar el método creando otro con el mismo número, pero distintos parámetros. float suma (float A, float B) { suma = A + B Return suma }. Podemos sobrecargar el método creando otro con el mismo número y mismos parámetros. float suma (A, B) { suma = float A + float B Return float(suma) }. Ejemplos sobrecarga de funciones Ejemplo 1: imaginemos que tenemos un método que suma dos números y devuelve el resultado. Entero suma (entero A, entero B) { suma = A + B Return suma } ¿Qué pasaría si queremos sumar dos números con decimales (float)?. Podemos sobrecargar el método creando otro con el mismo número, pero distintos parámetros. float suma (float A, float B) { suma = A + B Return suma }. Podríamos crear un método para inicializar una variable. entero inicialiarA (entero A) { inicialiarA = A Return suma } entero inicializara () { inicializarA = 0 } En este caso tenemos dos versiones de la misma función. Si se lanza con un parámetro, se utilizará ese valor. Si no se especifica ningún parámetro, se asignará 0. Podemos sobrecargar el método creando otro con el mismo número y mismos parámetros. float suma (A, B) { suma = float A + float B Return float(suma) }. Grado de interdependencia entre los distintos módulos de un programa. Acoplamiento. Ensamblamiento. Cohesión. Cooperación. Es la forma y nivel de interdependencia entre módulos, una medida de qué tan cercanamente conectados están dos rutinas o módulos del software (programa), así como el grado de fuerza de la relación entre módulos. Acoplamiento. Herencia. Cohesión. Encapsulamiento. Qué afirmaciones son verdaderas con respecto al acoplamiento. Un ejemplo simple de acoplamiento es cuando un componente accede directamente a un dato que pertenece a otro componente. En ese caso, el resultado del comportamiento del componente A dependerá del valor del componente B, por lo tanto, están acoplados. Un ejemplo simple de acoplamiento es cuando un componente accede indirectamente a un dato por medio de otro componente. En ese caso, el resultado del comportamiento del componente A no dependerá del valor del componente B, por lo tanto, están acoplados. El acoplamiento está comúnmente contrastado con la cohesión. El acoplamiento está comúnmente contrastado con la conectividad. El nivel de acoplamiento debe ser bajo, ya que se correlaciona con una alta cohesión, y viceversa. El bajo acoplamiento es frecuentemente una señal de un sistema bien estructurado y de un buen diseño de software. El nivel de acoplamiento debe ser alto, ya que se correlaciona con una alta cohesión, y viceversa. El alto acoplamiento es frecuentemente una señal de un sistema bien estructurado y de un buen diseño de software. tiene que ver con que cada módulo del sistema se refiera a un único proceso o entidad. Acoplamiento. Ensamblamiento. Cohesión. Encapsulamiento. Cuál es verdadera. A mayor cohesión mejor: el módulo será más sencillo de diseñar, programar, probar y mantener. A menor cohesión mejor: el módulo será más sencillo de diseñar, programar, probar y mantener. permite aumentar la cohesión (diseño estructurado) de los componentes del sistema. Algunos autores lo confunden con el principio de ocultación, porque se suelen emplear conjuntamente. Encapsulamiento. Cohesión. Congestión. Acoplamiento. Qué afirmaciones son verdaderas con respecto al encapsulamiento. La encapsulación o encapsulamiento consiste en reunir, en una cierta estructura, todos los elementos que a un cierto nivel de abstracción se pueden considerar pertenecientes a una misma entidad. La encapsulación o encapsulamiento consiste en reunir, en una cierta estructura, todos los elementos que se pueden considerar pertenecientes a una misma entidad sin necesidad de abstracción. Los objetos, tienen un gran sentido de la privacidad, por lo que sólo dan información sobre sí mismos, a través de los métodos que poseen para compartir su información. Los objetos, tienen un gran sentido de la privacidad, por lo que sólo dan información sobre sí mismos y los contiguos a ellos, a través de los métodos que poseen para compartir su información. Los objetos, también ocultan la implementación de sus procedimientos, aunque podemos pedirles, de un modo sencillo, mediante un mensaje, que los ejecuten. Los objetos, no ocultan la implementación de sus procedimientos, así que podemos pedirles, de un modo sencillo, mediante un mensaje, que los ejecuten. Los usuarios y programas de aplicación, no pueden ver que hay dentro de los métodos, solo pueden ver los resultados de su ejecución. Los usuarios y programas de aplicación, no pueden ver que hay dentro de los métodos, ni siquiera pueden ver los resultados de su ejecución. La idea fundamental de los LPOO, es encapsular (combinar), en una única unidad (objeto) tanto los datos como las funciones que los manipulan. La idea fundamental de los LPOO, es encapsular (combinar), en una única unidad o varias (objeto) las funciones que los manipulan mediante sus datos. Qué afirmaciones son verdaderas con respecto al encapsulamiento. Cada objeto presenta una interface publica al resto de objetos que pueden utilizarlo. Cada objeto presenta una interface publica al resto de objetos que pueden utilizarlo o visualizarlo. La característica de encapsular con la interface pública, permite modelar los objetos del mundo real de un modo mucho más eficiente que con funciones y datos. Mientras que la interface publica sea la misma, se puede cambiar la implementación de los métodos sin que sea necesario informar al resto de objetos que los utilizan. La característica de encapsular con la interface pública, permite modelar los objetos del mundo real de un modo mucho más fácil que con funciones y datos. Mientras que la interface publica sea diferente, se puede cambiar la implementación de los métodos sin que sea necesario informar al resto de objetos que los utilizan. Los objetos que poseen las mismas características y comportamiento se agrupan en clases que no son más que unidades de programación que encapsulan datos y operaciones. Los objetos que poseen las mismas características y comportamiento se agrupan en clases que son un nivel más que unidades de programación que encapsulan datos, métodos y operaciones. La encapsulación, oculta lo que hace un objeto de lo que hacen otros objetos (y lo oculta del mundo exterior), por lo que se denomina también ocultación de datos. Un objeto tiene que presentar una cara al mundo exterior, de modo que se puedan iniciar esas operaciones. La encapsulación, muestra lo que hace un objeto y lo que hacen otros objetos (y lo muestra del mundo exterior), por lo que se denomina también visualización de datos. Un objeto tiene que presentar una cara al mundo exterior, de modo que se puedan iniciar esas operaciones. Los usuarios de un componente solo necesitan saber qué servicios ofrece el objeto y no cómo lo hace. Por lo tanto, la interfaz pública establece qué se puede hacer con el objeto y la clase actúa como una caja negra. Los usuarios de un componente solo necesitan saber qué servicios ofrece el objeto y no cómo lo hace. Por lo tanto, la interfaz pública establece qué se puede hacer con el objeto y la clase actúa como una caja negra. Ocultación de datos en POO: Los objetos se comunican mediante mensajes. Los objetos se comunican mediante métodos y acciones. Los mensajes son llamadas a los métodos de otro objeto. Los mensajes son llamadas a los métodos del mismo objeto. Para leer o modificar un objeto hay que hacer una llamada a un método del objeto para que acceda al dato y nos devuelva el valor (no se puede hacer a los datos directamente). Para leer o modificar un objeto hay que hacer una entrada a un método del objeto para que acceda al dato y nos devuelva el valor (se puede hacer a los datos directamente). Las funciones de un objeto se llaman funciones miembro o métodos (según el lenguaje de programación), y son único medio para acceder a los datos de un objeto. Las funciones de un objeto se llaman funciones eslabón o acciones (según el lenguaje de programación), y pero no son único medio para acceder a los datos de un objeto. Esta propiedad facilita la escritura, depuración y mantenimiento de un programa. Esta propiedad dificulta la escritura, depuración y mantenimiento de un programa. Un objeto contiene: Atributos o variables de instancia (datos). Atributos o variables de objeto (datos). Métodos o funciones miembro (funciones). Métodos o funciones individuales (funciones). Los objetos se comunican mediante mensajes. Un mensaje es una llamada a un método del objeto. Los objetos se comunican mediante entradas o datos. Una entrada es un acercamiento a un método del objeto. Este concepto indica que una clase creada por un programador se pone a disposición de otros programadores para su utilización. También implicaría el uso de la clase por el creador para otro producto software diferente. Reusabilidad. Reutilización. Reutilización o reusabilidad. Restauración o rehabilitación. Rehabilitación. Restauración. Qué afirmaciones son verdaderas con respecto a la reusabilidad o reutilización de código. Es el mismo concepto que el de las bibliotecas de funciones de los lenguajes estructurados. Es un concepto parecido, pero un tanto más amplio, que el de las bibliotecas de funciones de los lenguajes estructurados. En lenguajes como C++ o Java, la reusabilidad puede ir más allá: Podemos coger una clase existente y crear una nueva clase que derive de esta. Heredará todas las propiedades de la clase de la que deriva, pero, además, podremos añadir nuevas características. En lenguajes como C# o Python, la reusabilidad puede ir más allá: Podemos coger una clase existente y crear una nueva clase que derive de esta. Heredará todas las propiedades de la clase de la que deriva, sin añadir nuevas características. La facilidad de reutilizar o reusar el software existente es uno de los grandes beneficios de la POO. La facilidad de reutilizar o reusar el software existente es el mayor beneficio de la POO. De este modo, en una empresa de software se pueden reutilizar clases diseñadas en un proyecto para un nuevo proyecto, con la consiguiente mejora de la productividad, al sacarle partido a la inversión realizada en el diseño de la clase primitiva. De este modo, en una empresa de software se pueden reutilizar clases diseñadas en un proyecto para un nuevo proyecto, con la consiguiente mejora de la eficacia del programa, al sacarle partido a la inversión realizada en el diseño de la clase posterior. Ventajas de la reutilización del software. Reducción de código. Inexistencia de código. Solo necesitan implementarse una vez. No necesitan implementarse. Si se tienen que modificar por algún fallo, tan solo se tiene que modificar una vez (y el cambio se reflejará en todos los productos que la utilicen). Si se tienen que modificar por algún fallo, tan solo se tiene que modificar dos veces (y el cambio se reflejará en todos los productos que la utilicen). Menor tiempo de desarrollo y menor coste de recursos. Menor tiempo de desarrollo pero mayor coste de recursos. Existen cuatro tipos básicos de relación entre clases: Asociación. Connotación. Agregación. Asimilación. Composición. Condensación. Herencia/Generalización (especialización). Herencia/Enmarcación (especialización). nos permite vincular o asociar dos entidades independientes. La abstracción de asociación. La abstracción de agregación. La abstracción de composición. La abstracción de herencia. Qué afirmaciones son verdaderas con respecto a la abstracción de asociación. Una asociación queda identificada por la identificación de las entidades participantes. Una asociación queda identificada por la participación de las entidades contractuales. Una asociación es una conexión semántica entre clases, permite que una clase no conozca de los atributos y operaciones públicas de otra clase sin permisos. Una asociación es una conexión semántica entre clases, permite que una clase conozca de los atributos y operaciones públicas de otra clase. La asociación se podría definir como el momento en que dos objetos se unen para trabajar juntos y, así, alcanzar una meta. En este caso, ambos objetos son independientes entre sí. La asociación se podría definir como el momento en que dos objetos se unen en uno solo para trabajar juntos y, así, alcanzar una meta. En este caso, ambos objetos son dependientes entre sí. La asociación representa la relación “usa un”, “tiene un”. La asociación representa la relación “es un”, “viene de un un”. Con la asociación, relacionamos dos tipos de entidades que normalmente son de dominios independientes, pero circunstancialmente (coyunturalmente) se asocian. Con la asociación, relacionamos dos tipos de entidades que normalmente son de dominios dependientes o relacionados, pero circunstancialmente (coyunturalmente) se disocian. Qué afirmaciones son verdaderas con respecto a la abstracción de asociación. Se representa uniendo las entidades que participan en la asociación, unidas por una línea continua. Se representa uniendo las entidades que participan en la asociación, unidas por un triángulo invertido. Ejemplo: una persona “tiene un” gafas. Ejemplo: una persona “usa un” gafas. Un programador usa un ordenador. Es una relación de asociación entre la clase programador y la clase ordenador. Un programador posee un ordenador. Es una relación de asociación entre la clase programador y la clase ordenador. nos permite construir entidades de un nivel más alto (objetos compuestos) a partir de sus entidades de nivel menor (objetos componentes). La abstracción de agregación. La abstracción de asociación. La abstracción de herencia. La abstracción de composición. Qué afirmaciones son verdaderas con respecto a la abstracción de agregación. Indica que una clase es parte de otra clase (composición débil). Los componentes pueden ser compartidos por varios compuestos (de la misma asociación de agregación o de varias asociaciones de agregación distintas). Indica que una clase parte de otra clase (composición fuerte). Los componentes pueden ser compartidos por varios compuestos (de distinta asociación de agregación o de varias asociaciones de agregación iguales). La destrucción de la agregación, no supone la destrucción de los componentes. La destrucción de la agregación, supone la destrucción de los componentes. Permite combinar varias entidades, entre las que existe una interrelación, y así formar una entidad de más alto nivel (nivel superior). Resulta útil cuando la entidad obtenida de más alto nivel se tiene que interrelacionar con otra entidad. Permite combinar varias entidades, entre las que no existe una interrelación, y así formar una entidad de menor nivel (nivel inferior). Resulta útil cuando la entidad obtenida de más alto nivel no se tiene que interrelacionar con otra entidad. Es un tipo de relación dinámica, donde, el tiempo de vida de una o más entidades de bajo nivel, que están incluidas en una entidad de alto nivel, es independiente a la entidad que la incluye (entidad de alto nivel). Es un tipo de relación estática, donde, el tiempo de vida de una o más entidades de bajo nivel, que están incluidas en una entidad de alto nivel, es dependiente a la entidad que la incluye (entidad de alto nivel). Se utiliza para expresar relaciones entre relaciones o entre entidades y relaciones. Se utiliza para expresar relaciones entre relaciones o entre entidades y métodos. Qué afirmaciones son verdaderas con respecto a la abstracción de agregación. Se utiliza más habitualmente que la composición. Su uso es menos habitual que el de la composición. El proceso inverso se denomina desintegración. El proceso inverso se denomina desagregación. Se representa englobando la relación abstraída y las entidades que participan en ella en un rectángulo, unidas por una línea con un rombo (hueco) en la entidad de nivel superior, la clase que representa “el todo”. (que es agregación de las otras). En el otro extremo puede dejarse la línea recta o con una flecha. Se representa englobando la relación abstraída y las entidades que participan en ella en un rombo, unidas por una línea con un cuadrado (hueco) en la entidad de nivel superior, la clase que representa “el conjunto”. (que es agregación de las otras). En el otro extremo puede dejarse la línea recta. Una agregación es una relación más fuerte que una asociación. Representa una clase que se compone de otras clases. La agregación es un tipo de relación dependiente. Una agregación es una relación más débil que una asociación. Representa una clase que se compone de otras clases. La agregación es un tipo de relación independiente. Una agregación representa la relación (todo-parte), es decir, una clase es el todo y contiene a todas las partes. También se puede definir con relación “tiene un” Un ordenador tiene un teclado. Un ordenador tiene una pantalla. La clase ordenador se compone de las clases teclado y pantalla (entre otras). Una agregación representa la relación (todo-parte), es decir, una clase es el todo y contiene a todas las partes. También se puede definir con relación “es un” Un ordenador es una herramienta de trabajo. Un ordenador es negro. La clase ordenador se compone de las clases herramienta y color (entre otras). Es similar a la agregación, pero la relación es más fuerte. Abstracción de Composición. Abstracción de Herencia. Abstracción de Asociación. Qué afirmaciones son verdaderas con respecto a la abstracción de composición. Los componentes que forman parte de la entidad de alto nivel, no tienen sentido si dicha entidad no existe. Los componentes que forman parte de la entidad de alto nivel, no pierden sentido si dicha entidad no existe. Si la entidad de alto nivel desaparece, los elementos relacionados también desaparecen, por sí mismos no tienen sentido. Por tanto, suelen tener los mismos tiempos de vida. Si la entidad de alto nivel desaparece, los elementos relacionados desaparecen, por sí mismos tienen sentido. Por tanto, suelen tener distintos tiempos de vida. A diferencia con la agregación, los componentes de la composición no se comparten entre varios elementos (no pueden ser compartidos por varios objetos compuestos). A diferencia con la agregación, los componentes de la composición se comparten entre varios elementos (pueden ser compartidos por varios objetos simples). La supresión del objeto compuesto no conlleva la supresión de los componentes. Se representa con un cuadrado relleno en la clase superior, que representa el “todo” (Compuesto). La supresión del objeto compuesto conlleva la supresión de los componentes. Se representa con un rombo relleno en la clase superior, que representa el “todo” (Compuesto). Ejemplo: un vuelo está compuesto por pasajeros, y un pasajero está asignado a un vuelo. (un pasajero “usa un” vuelo). Ejemplo: un vuelo es un tipo de transporte. (un transporte “consiste en” vuelo). Cuál es verdadera con respecto a la diferencia entre la abstracción de composición y la de asociación. La diferencia es que, al eliminar la asociación, las entidades participantes siguen existiendo, y, en la composición, si se elimina la entidad agregada se eliminan además las entidades que la forman. La diferencia es que, al eliminar la asociación, las entidades participantes no siguen existiendo, y, en la composición, si se elimina la entidad agregada no se eliminan además las entidades que la forman. es la técnica por la cual el entorno de objetos se encarga de destruir automáticamente, y por tanto desvincular la memoria asociada, los objetos que hayan quedado sin ninguna referencia a ellos. Trashing. Recolección de basura (garbage collection). Recogida de deshechos. Disociación. Marginación. Esto significa que el programador no debe preocuparse por la asignación o liberación de memoria, ya que el entorno la asignará al crear un nuevo objeto y la liberará cuando nadie lo esté usando. Con la recolección de basura. Con el trashing. Con la descomposición. Con la desagregación. Recolección de basura. el programador no debe preocuparse por la asignación o liberación de memoria, ya que el entorno la asignará al crear un nuevo objeto y la liberará cuando nadie lo esté usando. el programador no debe preocuparse por la asignación o liberación de memoria, ya que el entorno la asignará al crear un nuevo objeto y no la liberará cuando nadie lo esté usando. Con respecto a la recolección de basura. En la mayoría de los lenguajes híbridos que se extendieron para soportar el Paradigma de Programación Orientada a Objetos como C++ u Object Pascal, esta característica no existe y la memoria debe desasignarse expresamente. En la mayoría de los lenguajes híbridos que se extendieron para soportar el Paradigma de Programación Orientada a Objetos como C++ o Pascal, esta característica está implementada y la memoria no tiene porqué desasignarse expresamente. es un elemento que se estudia desde el punto de vista de las entradas que recibe y las salidas o respuestas que produce, sin tener en cuenta su funcionamiento interno. Caja negra. Memoria de apartado. Caché. Registro de eventos. Caja negra. es un elemento que se estudia desde el punto de vista de las entradas que recibe y las salidas o respuestas que produce, sin tener en cuenta su funcionamiento interno. es un elemento que se estudia desde el punto de vista de las entradas que recibe, no de las salidas o respuestas que produce, teniendo en cuenta su funcionamiento interno. Qué afirmaciones son verdaderas con respecto a las cajas negras. Nos interesará su forma de interactuar con el medio que le rodea (en ocasiones, otros elementos que también podrían ser cajas negras), nos importa qué es lo que hace, pero no nos importa cómo lo hace. Nos interesará su forma de interactuar con el medio que le rodea (otros elementos no podrían ser cajas negras), nos importa cómo lo hace, al igual que nos importa el qué hace. Debe estar muy bien definida su interfaz: sus entradas y salidas. Debe estar muy bien definidos sus puertos: sus entradas y salidas. En programación modular, en la fase de diseño se buscará que cada módulo sea una caja negra dentro del sistema global que es el programa que se pretende desarrollar. En programación modular, en la fase de implementación se buscará que cada módulo sea una caja negra dentro del sistema global que es parte del programa que se pretende desarrollar. se consigue una independencia entre los módulos, que facilita que el desarrollador de un módulo concreto, va a encargarse de implementar su módulo y deberá conocer como es la comunicación con los otros módulos (la interfaz), pero no necesitará conocer cómo trabajan esos otros módulos internamente, que serán para él cajas negras. se consigue una dependencia entre los módulos, que facilita que el desarrollador de un módulo concreto, va a encargarse de implementar su módulo y no tendrá que conocer como es la comunicación con los otros módulos (la interfaz), pero necesitará conocer cómo trabajan esos otros módulos internamente, que serán para él cajas negras. Ventajas de los POO. Herencia. Permite la reducción del uso de código redundante. La adaptación es sencilla para programadores acostumbrados a la programación estructurada. Reutilización de código. Posibilita reusar código y extenderlo a través de las clases. No será necesario probarlo de nuevo. Los objetos no requieren mucha documentación. Abstracción. La jerarquía y abstracción de los objetos nos permite hacer una implementación más detallada y coherente. La visión abstracta de un objeto puede ser percibida de forma distinta por dos programadores. La implementación de clases y objetos proporciona una relación más directa con el mundo real. Mayor velocidad de ejecución. Modularidad. Los componentes tienen independencia entre sí, por lo que se consigue un bajo acoplamiento y una alta cohesión. No se hereda código no necesario. Ventajas de los POO. Facilidad en el desarrollo y el mantenimiento. Código simple. La adaptación es sencilla para programadores acostumbrados a la programación estructurada. Datos separados del diseño. Los objetos no requieren mucha documentación. Es más fácil de documentar. Las tareas simples requieren menos esfuerzo que en un lenguaje estructurado. Desventajas de los POO. La adaptación es compleja para programadores acostumbrados a la programación estructurada. Es más difícil de documentar. Los objetos requieren mucha documentación. Datos unidos al diseño. La visión abstracta de un objeto puede ser percibida de forma distinta por dos programadores. Dificultad en el desarrollo y el mantenimiento. Código complejo. Menor velocidad de ejecución. Herencia. No permite la reducción del uso de código redundante. Se hereda código no necesario. Las tareas simples requieren más esfuerzo que en un lenguaje estructurado. se creó para forjar un lenguaje de modelado visual común para la arquitectura, el diseño y la implementación de sistemas de software complejos. De hecho, se ha convertido en el estándar para modelar aplicaciones software y su popularidad en el modelado no para de crecer en otros dominios. El lenguaje unificado de modelado (UML). El lenguaje unificado de condensado (UMC). El lenguaje dosificado de modelado (DML). |