






Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Los mejores documentos en venta realizados por estudiantes que han terminado sus estudios
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Descubre las mejores universidades de tu país según los usuarios de Docsity
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
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
1 / 10
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!
SmallTalk no es tipado
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:
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
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
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
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 +
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