






























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
Encuentra los documentos específicos para los exámenes de tu universidad
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
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
Asignatura: Logoterapia, Profesor: Gaby Gaby, Carrera: Psicología, Universidad: UFV
Tipo: Resúmenes
1 / 38
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!































LIDIALaboratorio de Investigación ydesarrollo en Inteligencia ArtificialDepartamento de ComputaciónUniversidade da Coruña, España
© Eduardo Mosqueira Rey
Departamento de Computación
Universidade da Coruña
© Eduardo Mosqueira Rey
Departamento de Computación
Universidade da Coruña
Todo objeto de una subclase es un objeto de una superclase
La palabra clave para llamar a un constructor de la superclasees
super
(la palabra clave
this
se utilizaba para llamar a un
constructor de la propia clase)
class
SuperClase
{
int
valor;
public
SuperClase(
int
valor)
{
this
.valor = valor;
}
} class
SubClase
extends
SuperClase
{
// Constructor necesario ya que la superclase// no tiene constructor por defecto public
SubClase(
int
valor)
{
super
(valor); }
}
© Eduardo Mosqueira Rey
Departamento de Computación
Universidade da Coruña
Los constructores no se heredan, son exclusivos de la clase enla que se definen
Por ello la primera instrucción de un constructor de unasubclase es llamar al constructor de la superclase, y este a suvez al de su superclase hasta llegar a la clase Object
Esta llamada generalmente está implícita y consiste en unallamada al constructor sin parámetros. Si queremos hacerlaexplícita deberemos poner “super()” como primera instrucción
Si el constructor sin parámetros no existe la llamada implícitafallará y será necesario hacer una llamada explícita:“super(param1, param2)”
© Eduardo Mosqueira Rey
Departamento de Computación
Universidade da Coruña
API de colecciones
<
List
AbstractCollection
<
Collection
<
Set
<
SortedSet
AbstractSet
AbstractList
TreeSet
HashSet
ArrayList
AbstractSequentialList
LinkedList
<
Map
<
SortedMap
AbstractMap
TreeMap
HashMap
WeakHashMap
© Eduardo Mosqueira Rey
Departamento de Computación
Universidade da Coruña
El término viene del griego y significa “muchas formas”
En lenguajes OO se podría definir como: “la capacidad de unavariable de tener más de un tipo y de una función de seraplicada sobre parámetros de distintos tipos”.
Las variables sólo pueden tener un tipo y las funciones sóloadmitían parámetros con un único tipo (ej. Pascal estándar)
El polimorfismo involucra distintos aspectos, defuncionamiento similar, pero que se basan en conceptoscompletamente distintos
Para intentar poner un poco de orden entre todas lasdefiniciones que implicaban polimorfismo Cardelli y Wegner(1985) realizaron una clasificación de las mismas
© Eduardo Mosqueira Rey
Departamento de Computación
Universidade da Coruña
© Eduardo Mosqueira Rey
Departamento de Computación
Universidade da Coruña
Es propio de los lenguajes orientados a objetos.
Es aquel que se consigue a través de la herencia. Por eso sellama también polimorfismo de subclases, o de herencia, osimplemente polimorfismo
Indica que un objeto de una subclase puede utilizarse enaquellos lugares en los que se requiere un objeto de sussuperclases
Recordemos que un objeto de la subclase incluye internamenteun objeto de la superclase
Animal
listaAnimales[]
=
new
Animal[10];
listaAnimales
[0]
=
new
Perro();
listaAnimales
[1]
=
new
Gato();
listaAnimales
[2]
=
new
Animal();
…
© Eduardo Mosqueira Rey
Departamento de Computación
Universidade da Coruña
import
java.util.*;
public
class
ListaSinGenericidad
{
public
static
void
main
(String
[]
args)
{
List
listaGatos
=
new
ArrayList
();
listaGatos.
add
(
new
Gato
());
listaGatos.
add
(
new
Coche
());
Gato
gato
=
(Gato)listaGatos.
get
(0);
Gato
gato
=
(Gato)listaGatos.
get
(1);
}
}
El type-cast es necesario para evitar
un error en tiempo de compilación
Error ClassCastException, estamos
intentando convertir un Coche en
un Gato
No existe
seguridad de tipos
en las
colecciones que utilizan el
polimorfismo de inclusión
© Eduardo Mosqueira Rey
Departamento de Computación
Universidade da Coruña
© Eduardo Mosqueira Rey
Departamento de Computación
Universidade da Coruña
Realizan comprobaciones de tipo en tiempo de compilación(en una lista de gatos sólo puede haber gatos)
Se evitan los fallos en tiempo de ejecución
No necesitamos “typecasts” para sacar objetos de lacolección
Las colecciones se declaran con un tipo, por lo que hacemás claro su uso
© Eduardo Mosqueira Rey
Departamento de Computación
Universidade da Coruña
Los tipos genéricos deben ser objetos (no tipos básicos)
class
CajaGenerica
{
private
T valor;
public
T
getValor
()
{
return
valor; }
public void setValor
(T valor)
{
this
.valor = valor; }
public static void main
(String [] args)
{
CajaGenerica
new
CajaGenerica
CajaGenerica
new
CajaGenerica
cajaGato.
setValor
(
new
Gato
());
System.out.
println
("everything is ok");
//cajaInteger.setValor(new Gato()); // Error de compilación
}
}
© Eduardo Mosqueira Rey
Departamento de Computación
Universidade da Coruña
¿Es el siguiente código válido?
De otra forma: ¿El tipo de retorno se tiene en cuenta a la hora deresolver la sobrecarga?
Respuesta:
El código NO es válido
La sobrecarga paramétrica se basa en que los métodos sobrecargadosdeben tener distinta firma (siendo la firma de un método el nombre dela función y en el tipo y número de parámetros, nunca el tipo deretorno).
Por ejemplo: si llamamos a los métodos por sus efectos laterales (sinrecoger el tipo de retorno) no sabremos a qué método llamar.
int metodoX
();
{ …
}
float
metodoX();
{ …
}
int i
=
metodoX();
float
f
=
metodoX();
metodoX();metodoX();
© Eduardo Mosqueira Rey
Departamento de Computación
Universidade da Coruña
Aparece cuando una subclase define un método con el mismonombre, tipo de retorno y parámetros que una superclase
El método de la subclase reemplaza por completo el método dela superclase
El método de la subclase es una forma refinada del método dela superclase (se utiliza el código de la superclase pero seañaden algunas características propias)
Para acceder a la versión del método de la superclase se utilizael puntero super (que apunta a la superclase) seguido delnombre del método. Por ejemplo, super.metodoX()
Al contrario de la llamada super de los constructores, la llamadasuper en los métodos sobreescritos no tiene porque apareceren primer lugar