Programación Orientada a Objetos

Anuncio
Programación Orientada a
Objetos
Templates (Plantillas) en JAVA
Angela C. Carrillo Ramos
Templates (Plantillas)
Mecanismo que permite definir clases que
son parametrizadas por tipos, lo que hace
estas clases polimórficas
polimórficas..
Un template de Lista permite generar
cualquier lista,
lista, mientras que una Lista de
Object es una lista de cualquier tipo de
objetos..
objetos
Con los templates no hay pérdida de tipos
1
Templates (Plantillas)
Stack stack=new Stack();
stack.push(“la casa de la loma");
...
Iterator it=stack.iterator();
while (it.hasNext())
System.out.println(((String)
System.out.println((
(String)it.next()).substring(9));
it.next()).substring(9));
Templates (Plantillas)
Stack<String> stack=new
Stack<String>
Stack<String>
Stack
<String>();
();
stack.push(“la casa de la loma");
...
Iterator<String>
Iterator
<String> it=stack.iterator();
while (it.hasNext())
System.out.println(it.next().substring(9));
2
Templates (Plantillas)
class Sorter<Object
Sorter<Object key1,
key1,String
String key2> {
...
}
Sorter<Object
Sorter<
Object,,Object
Object>
> // ilegal, Object no hereda de String
Sorter<Object
Sorter<
Object,,String
String>
> // legal
Sorter<String
Sorter<
String,,String
String>
> // legal, String hereda de Object
Sorter<Integer
Sorter<
Integer,,Integer
Integer>
> // ilegal, Integer no hereda de
String
Sorter<int
Sorter<
int,,String
String>
> // ilegal, int es un tipo primitivo y no
hereda de Object
Templates (Plantillas)
type
Para indicar que el paràmetro puede ser de
cualquier tipo primitivo o de una clase
Los ùnicos operadores vàlidos son la
asignaciòn y la igualdad.
number
El paràmetro puede ser de tipo : byte, char,
double, float, int, long, short.
Les operaciones posibles son la asignaciòn,
suma, resta, multiplicaciòn, etc.
3
Templates (Plantillas)
class Sum<number
Sum<number Value> {
abstract Value f(Value value);
Value sum(Value debut,Value fin) {
Value res=0;
for(Value i=debut;i<=fin;i+=1)
res+=f(i); return res;
}
}
Templates (Plantillas)
class Ref<Object Item> {
Item items[];
Item get(int i) {
if (i<0) // ilegal
return “ningún valor";
}
}
else
return items[i];
class Ref<Object Item> {
Item items[];
Item get (int i) {
if (i<0) // legal
return (Item)(Object)
“ningún valor";
else
return items[i];
}
}
4
Descargar