Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad

Sobrecarga de Nombre y Tipos Abstractos de Datos en Programación Orienta a Objetos, Resúmenes de Paradigmas de Programación

El concepto de sobrecarga de nombre en Programación Orienta a Objetos y cómo se resuelve la ambigüedad utilizando tipos polimórficos y cuantificación universal. Además, se introduce el concepto de Tipos Abstractos de Datos (TDA) y su relación con POO, incluyendo ejemplos de mensajes y secuencias de mensajes.

Tipo: Resúmenes

2021/2022

Subido el 11/10/2022

cesar-alejandro-feierabend
cesar-alejandro-feierabend 🇦🇷

1 documento

1 / 10

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
Teoría
SmallTalk no es tipado
Sobrecarga
La sobrecarga, como sugiere su otro nombre (polimorfismo ad hoc), es realmente
polimorfismo solo en apariencia. Un nombre está sobrecargado cuando corresponde a más
a un objeto y la información de contexto para determinar qué objeto se señaló por una
instancia específica de ese nombre. Los ejemplos más comunes de esto son:
+ El uso del nombre + para indicar sumas enteras o reales (y a veces
también denota concatenación de secuencias de caracteres).
+ La capacidad de definir más de una función (o constructor) con el mismo nombre
pero cuyas instancias difieren en el número o tipo de sus parámetros.
En caso de sobrecarga, por lo tanto, un solo nombre corresponde a más de un objeto (de
hecho, a un número finito de objetos). 1si es el nombre de una función, se asociará con
diferentes piezas de código. La ambigüedad de la situación se resuelve estáticamente
usando información de tipo que está presente en el contexto. Desde el punto de vista
conceptual, podemos imaginar una especie de pre-análisis del programa que resuelve
casos de sobrecarga al sustituir un nombre inequívoco que únicamente denota un objeto
único para cada símbolo que está sobrecargado. La sobrecarga es por lo tanto
pf3
pf4
pf5
pf8
pf9
pfa

Vista previa parcial del texto

¡Descarga Sobrecarga de Nombre y Tipos Abstractos de Datos en Programación Orienta a Objetos y más Resúmenes en PDF de Paradigmas de Programación solo en Docsity!

Teoría

SmallTalk no es tipado

Sobrecarga

La sobrecarga, como sugiere su otro nombre (polimorfismo ad hoc), es realmente polimorfismo solo en apariencia. Un nombre está sobrecargado cuando corresponde a más a un objeto y la información de contexto para determinar qué objeto se señaló por una instancia específica de ese nombre. Los ejemplos más comunes de esto son:

  • El uso del nombre + para indicar sumas enteras o reales (y a veces también denota concatenación de secuencias de caracteres).
  • La capacidad de definir más de una función (o constructor) con el mismo nombre pero cuyas instancias difieren en el número o tipo de sus parámetros. En caso de sobrecarga, por lo tanto, un solo nombre corresponde a más de un objeto (de hecho, a un número finito de objetos). 1si es el nombre de una función, se asociará con diferentes piezas de código. La ambigüedad de la situación se resuelve estáticamente usando información de tipo que está presente en el contexto. Desde el punto de vista conceptual, podemos imaginar una especie de pre-análisis del programa que resuelve casos de sobrecarga al sustituir un nombre inequívoco que únicamente denota un objeto único para cada símbolo que está sobrecargado. La sobrecarga es por lo tanto

Tipos polimórficos y cuantificación universal En lugar de escribir un tipo polimórfico entre paréntesis angulares, un tipo más uniforme de notación (una que es más sugerente, así como matemáticamente más precisa) es el que utiliza la cuantificación universal. En lugar de -> void, escribimos VI. T[]->void. Esta es una notación que se adapta bien a la descripción de todas las variaciones de polimorfismo que se han propuesto. Una especie de abreviatura a nivel sintáctico. Se desvanece tan pronto como introducimos Información Adicional. La sobrecarga no debe confundirse con la coerción. ¡Son dos mecanismos diferentes! que resuelven diferentes problemas. Por otro lado, en presencia de coerciones, puede que no esté del todo claro cómo se debe resolver un caso de sobrecarga. Considere, por ejemplo, las siguientes expresiones:

Los mensajes Unary o unarios son mensajes sin argumentos, constan de receptor mensaje. Ejemplos: -1 abs. 2 class. 1000 factorial. ‘aeiou’ size. Date today. Time now. OrderedCollection new. Los mensajes Binary o binarios son mensajes compuestos de la forma receptor unOperador argumento. Ejemplos: 3+5. 3>7. 3=5. ‘Un string’,’siendo concatenado’. Los mensajes Keyword están formados con 1 o más palabras clave, con sus respectivos argumentos, con la forma receptor palabraClave1: argumento1. O de la forma receptor palabraClave1: argumento1 palabraClave2: argumento. Ejemplos: ‘Un String’ first: 3. 5 between: 1 and: 10. 1 to: 5. Explicar la diferencia entre variables globales, variables temporales y de instancia

Práctica

Introducción ■ Con comillas dobles “” se añaden comentarios ■ Cada línea termina con un punto (.) ■ La asignación se hace con := ■ Las cadenas de caracteres se escriben con comillas simples ‘’ ■ Para enviar más de un mensaje al mismo receptor se usa punto y coma, por ejemplo ■ Transcript clear; show: ‘algo’; cr; show: ‘y algo’; cr. ■ Precedencia: Los mensajes se evalúan de izquierda a derecha. Los mensajes unarios tienen precedencia sobre los binarios, y a su vez los binarios sobre los mensajes keyword. Se puede romper las reglas de precedencia usando paréntesis. Cómo mostrar datos Con atajo: Ctrl+P sobre la línea a evaluar para imprimir en el mismo Workspace Con instrucción: ■ Transcript show: variable. “imprime la variable sin salto de línea” ■ Transcript show: variable;cr. “imprime la variable con salto de línea”

■ Transcript showln: variable. “imprime la variable con salto de línea” Bloque de código [ :parametro_a :parametro_b | “esto sería equivalente a una función, dentro de este sector se puede definir el código que va a ejecutarse con los parámetros, se puede declarar variables locales con |y|” ] Bucles cantidad_veces_a_repetir timesRepeat: bloqueDeCodigo. inicio to: fin do: bloqueDeCodigo. Cómo crear un array Se pueden crear arrays con #(1 2 3 4). Otra forma de crear un array es nombre_array = Array new. “Se puede definir el tamaño del array con new: tamaño” nombre_array at: posicionAInsertar put: elemento. El array puede contener todo tipo de objetos, ya sea números, strings como otros arrays. #(‘texto’ 1 2 3 4). Se puede manipular un array dentro de otro: array = Array new. array_contenido = Array new. array at: 1 put: array_contenido; at: 2 put: ‘hola’; at: 3 put: 3. (array at: 1) at: 1 put: 2. Entonces, se imprimiría #(#(2) ‘hola’ 3). Cómo crear una clase Hay que acceder al menú Browser, presionar click derecho sobre “Kernel.classes” y “Add item…”, esto sería el “paquete” que va a contener las clases. Se puede detallar una nueva clase en la plantilla ofrecida por el paquete. Métodos Un método puede devolver un valor con ^ valorARetornar. Cómo crear una colección OrderedCollection SortedCollection Set Bag

  1. El objeto es una forma natural de implementar entidades para los analistas. V Polimorfismo
  2. Los mensajes son asociados a los objetos en tiempo de compilación. F
  3. Los conceptos de método y mensaje pueden utilizarse indistintamente pues son sinónimos. F
  4. Polimorfismo y herencia son conceptos estrechamente relacionados, puesto que un mensaje recibido por un objeto supondrá la búsqueda del respectivo método siguiendo su línea de herencia. V Herencia
  5. La herencia múltiple permite que un objeto pueda ser instanciado a partir de varias plantillas (clases). V
  6. Un método sobrecargado es aquel cuyo contenido es redefinido completamente en la clase hija. F
  7. La herencia está vinculada con la abstracción, por lo que es una forma de abstraer características comunes a varias clases en una nueva clase. **V
  8. Indique las respuestas correctas** a. El paradigma orientado a objetos tiene como objetivo i. Mejorar la mantenibilidad del software ii. Mejorar la velocidad de ejecución del código. b. En Smalltalk Squeak i. se adopta el paradigma de objetos “puro” ii. Tiene una sintaxis que cuenta con algunas estructuras de control básicas como if then o do … while. iii. Una imagen de la máquina virtual mantiene las clases, objetos y sus estados que están en memoria. iv. Cuando se manda un mensaje a un objeto y no lo tiene implementado como método este responde como "mensaje no comprendido” v. Es un lenguaje TIPADO c. Un objeto i. Tiene estado, comportamiento y entidad ii. La identidad del objeto puede ser alterada por sus métodos iii. Tiene un ciclo de vida dependiente de su contexto de ejecución, salvo que fuese persistido de alguna forma 4. Para el siguiente problema identifique: clases, objetos, métodos y mensajes, y defina al menos una secuencia de mensajes para un caso de uso. Se desea construir un sistema de gestión de biblioteca, hemeroteca y cedeteca(cds multimedia y de audio). Se definen las siguientes iteraciones para las cuales deberá plantear un modelo que se ajuste a ellas y para las siguientes realizar modificaciones sobre el modelo original. Iteración 1) Se identifica a los libros, revistas y cds como objetos del sistema. También se crean los objetos para clientes, préstamos y devoluciones. Se define el requisito de préstamo a partir de un caso de uso, y se establece una secuencia de mensajes entre objetos para satisfacer el caso de uso. Cree los objetos que considere necesarios.

Iteración 2) La biblioteca amplía la lista de artículos "prestables". Mejorar la clasificación de manera tal que se respete el principio de "abierto/cerrado". Iteración 3) Se considera la venta de algunos pocos artículos, los que se venden en calidad de "articulo usado", puesto que son los que regularme se prestan. Cree un caso de uso y especifique la secuencia de mensajes.

5. Identifique receptor, selector y orden de evaluación de las siguientes expresiones en Smalltalk. a := 5 factorial * 7 Se puede descomponer esta expresión en varios mensajes unarios y binarios: 5 factorial es un mensaje unario, 5 es el receptor, factorial es el selector del mensaje 5 factorial * 7 es un mensaje binario, el resultado de evaluar 5 factorial es el receptor; * es el selector y 7 es el argumento de la operación. a := 5 factorial * 7 es un mensaje binario, a es el receptor, := es el selector y 5 factorial * 7 es el argumento. x := y + z * w #(3 4 5 12) at: 2 put: (2 raisedToInteger: 5)// raiseToInteger, es un método para elevar un número a la potencia del número pasado como argumento. Banco >> calcularSumaSaldos: unaColeccionCuentasCliente /*método para devolver el total de los saldos de las cuentas de clientes. */ float sumaSaldos := 0. 1 to: unaColeccionCuentasCliente size do: [:i | sumaSaldos := sumaSaldos +

unaColeccionCuentasCliente at: i saldoCuenta. ].

return sumaSaldos.

6. Indique si la siguientes aseveraciones son Ciertas o Falsas, y además indique si se trata de los conceptos centrales del POO: Abstracción (A), Polimorfismo(P) o Herencia (H). ● El modelo de contrato permite conocer los servicios provistos por una clase, independientemente de cómo se implemente. Verdadero - Herencia ● Un método sobrecargado es aquel cuyo contenido es redefinido completamente en la clase hija. Verdadero - Abstracción ● El objeto se define pensando en que su funcionamiento interno quede expuesto al exterior. Falso - Abstracción ● Los mensajes son asociados a los objetos en tiempo de compilación Falso - Polimorfismo

iii. Es eliminado en forma automática de la memoria cuando no se lo utiliza más (cuando no es referenciado) d. En smaltalk squeak i. Se adopta el siguiente formato de sentencias [ : <parámetro] ii. Estructuras de control tales como if then else o do … while, forman parte de la sintaxis del lenguaje. iii. Una imagen de la máquina virtual mantiene las clases, objetos y sus estados que están en memoria. iv. El código se “evalúa”, no se compila ni se ejecuta en el sentido “tradicional” del término.