Document related concepts
no text concepts found
Transcript
Examen de Lenguajes de Programación. Febrero 2001
1. Compara los tipos de polimorfismo que se encuentran en los
diferentes paradigmas de programación. Explicar cada tipo con
un ejemplo en los siguientes lenguajes: C, Ada, Java, Smalltalk y
ML. Destacar la utilidad concreta del polimorfismo en cada
paradigma con ejemplos.
2. Dado el siguiente código en Java
1
Vector lista = new Vector();
2
Perro a = new Perro();
3
Gato g = new Gato();
4
lista.add(a);
5
lista.add(f);
6
Iterator it = lista.iterator();
7
while (i.hasNext()){
8
Animal a = (Animal)i.next();
9
a.habla();
10
}
Donde Animal tiene un método habla y Perro y Gato heredan de
Animal sobrescribiendo el método habla. Perro y Gato tienen además
un método duerme.
a) Explicar los conceptos del paradigma orientado a objetos
aplicables a este ejemplo (tipado, polimorfismo, ligadura dinámica).
encapsulación)
b) ¿ Podemos ahora meter un objeto Date en la lista ? ¿Por qué ?
c) ¿ Podemos ahora introducir este código << a.duerme() >> tras la
linea 9 ? ¿Fallaría? ¿por qué ? ¿ en tiempo de compilación o
ejecución ?
d) Implementa este ejemplo en Smalltalk, comenta las diferencias y
responde sobre él a las preguntas a,b y c.
3. Explicar como resuelve, un lenguaje sin variables como ML,
problemas como: almacenamiento de valores intermedios,
selección, iteración y abstracción. Explicar los conceptos sobre
este ejemplo. ¿ Para que sirve la función convierte ?
¿ Que son los tipos recursivos ? Ejemplos en ML.
datatype ‘a TREE= Tnil
| Tree of (‘a TREE * ‘a * ‘a TREE);
fun convierte (Tnil:’a TREE) = nil : ‘a list
| convierte (Tree(ltree,node,rtree))
= convierte ltree
@ [node]
@ convierte rtree
4. Crear las reglas necesarias para establecer si Y es descendiente
de X. Tenemos una base de datos de reglas como:
padre(abuelo,padre1).
padre(abuelo,padre2).
padre(padre1,pep).
padre(padre1,joan).
padre(pep,gerard)
a) Crear la jerarquia que querais y posteriormente hacer preguntas
como:
¿gerard es descendiente de abuelo ?
Dime todos los descendientes de abuelo.
Dime todos los ascendientes de gerard.
Vuestro codigo debe ser aplicable a n número de ramas.
b) ¿ Qué es la Unificación ? Ejemplo.
NOTA: Se tendrá en cuenta en la puntuación la entrega del modelo 3
de prácticas. Puntuación: 1. 2.5 2. 2.5 3. 2.5 4. 2.5