PDF de programación - Herencia

Imágen de pdf Herencia

Herenciagráfica de visualizaciones

Publicado el 26 de Febrero del 2017
833 visualizaciones desde el 26 de Febrero del 2017
220,0 KB
28 paginas
Creado hace 17a (16/04/2007)
Herencia

Luis Fernando Llana Díaz

Departamento de Sistemas Informáticos y Computación

Universidad Complutense de Madrid

16 de abril de 2007

Luis Fernando Llana Díaz

Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid

Herencia

Herencia: relación es un

I

Seres materiales

Seres inertes

Seres vivos

Coches

Plantas

Animales

Renault

Flores

Insectos

Peces

Mamíferos

el coche de Flora

el geranio de juan

Perros

Humanos

el caniche de juan

Alumnos

Vendedores

Profesores

Juan

Floristas

Enrollados

Capullos

Flora

Luis

Luis Fernando Llana Díaz

Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid

Herencia

Herencia: relación es un

II

Recorrido de la jerarquía

Según se recorre la jerarquía los elementos que están por debajo
heredan características de los elementos superiores:

Todos los objetos tienen masa y volúmen.

Todos los seres vivos nacen, crecen, etc. . . .

Todos los mamíferos maman cuando son pequeños, etc. . . .

Todos los perros ladran.

Luis Fernando Llana Díaz

Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid

Herencia

Herencia: relación es un

III

Por tanto el perro de juan

tienen masa y volúmen.

nace, crece, etc. . . .

mamó cuando fue pequeño, etc. . . .

ladra.

Características heredadas

Existen características que no cambian (peso y volúmen).

Caracteríticas que se añaden.

Características que se modifican, se refinan o cambian.

Luis Fernando Llana Díaz

Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid

Herencia

Herencia múltiple

padre

director de banco

director de banco que tiene hijos

Pepe

Luis Fernando Llana Díaz

Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid

Herencia

Herencia en Java

Interfaces.

Clases abstractas.

Extensión de clases.

Implementación de interfaces.

Luis Fernando Llana Díaz

Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid

Herencia

Clase Object

public class Patata {

. . . . . . .
. . . . . . .
. . . . . . .

}

Clase Object

1
2
3
4
5

public class Patata e x t e n d s Object {

. . . . . . .
. . . . . . .
. . . . . . .

}

1
2
3
4
5

La clase Object es la superclase de todas las clases en Java.
Dispone, entre otros, de los métodos:

boolean equals(Object obj)

String toString()

Estos métodos se deben sobreescribir en las subclases.

Luis Fernando Llana Díaz

Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid

Herencia

Clase Fecha

public b o o l e a n equals ( Object obj ) {

if (! ( obj i n s t a n c e o f Fecha )) return false ;
return d i a s D e s d e I n i c i o ==(( Fecha ) obj ). d i a s D e s d e I n i c i o ;

}

public String t o S t r i n g (){

F e c h a T e r n a f = new F e c h a T e r n a ( d i a s D e s d e I n i c i o );
return f . t o S t r i n g ();

}

1
2
3
4

1
2
3
4

Luis Fernando Llana Díaz

Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid

Herencia

Extensión de clases

Extensión de clase

p a c k a g e fecha ;
public class F e c h a F u e r a D e R a n g o e x t e n d s R u n t i m e E x c e p t i o n {

public F e c h a F u e r a D e R a n g o ( String s ) {

super ( s );

}

}

Extensión de interfaz

public class Fecha i m p l e m e n t s C o m p a r a b l e {

. . . . . . . . .
. . . . . . . . .
. . . . . . . . .

}

1
2
3
4
5
6

1
2
3
4
5

Luis Fernando Llana Díaz

Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid

Herencia

Clases, clases abstracas e interfaces

Clase normal: todalmente definida, puede haber objetos de esa

clase.

Clase abstracta: parcialmente definida, puede tener algún atributo,

métodos totalmente definidos y métodos no
definidos.

Interfaz: sólo define algún método, pero sin implementar.

Luis Fernando Llana Díaz

Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid

Herencia

Clase Abstracta

public a b s t r a c t class Patata {

p r i v a t e int a t r i b u t o ;
public a b s t r a c t m o d i f i c a ( int x );

}

1
2
3
4

Luis Fernando Llana Díaz

Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid

Herencia

Interfaz

El interfaz Comparable del API de Java debe ser de la forma

p a c k a g e java . lang ;
public i n t e r f a c e C o m p a r a b l e {

public int c o m p a r e T o ( Object o );

}

1
2
3
4

Luis Fernando Llana Díaz

Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid

Herencia

Herencia múltiple

public class Patata {

public int x ;
public void i n c r e m e n t a (){

x = x +1;

}

}

1
2
3
4
5
6

public class Tomate {

public int x ;
public void i n c r e m e n t a (){

x = x +10;

}

}

public class L e c h u g a e x t e n d s Patata , Tomate {

public int y ;

}
......
......
L e c h u g a l e c h u g a = new L e c h u g a ();
l e c h u g a . i n c r e m e n t a (); // ¿ i n c r e m e n t a x = x +1 ó x = x +10 ?

1
2
3
4
5
6

1
2
3
4
5
6
7

Luis Fernando Llana Díaz

Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid

Herencia

Herencia múltiple en Java

En Java existe versión restringida de herencia

Se puede extender sólo 1 clase.

Se puende implementar más de 1 interfaz.

public class T r a z a d o r e x t e n d s Frame

i m p l e m e n t s W i n d o w L i s t e n e r , O b j e t o C o m p a r a b l e {

1
2

Luis Fernando Llana Díaz

Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid

Herencia

Objeto super

Invocación a la superclase

public class E s t u d i a n t e {
p r i v a t e String nombre ;
public E s t u d i a n t e ( String nombre ) {

this . nombre = nombre ;

}
public void e s t u d i a ( double tiempo ) { . . . . }

}

public class E s t u d i a n t e P e r e z o s o e x t e n d s E s t u d i a n t e {

public E s t u d i a n t e P e r e z o s o ( String nombre ) {

super ( nombre );

}
public void t r a b a j a ( double tiempo ){

super . e s t u d i a ( tiempo /3);
d e s c a n s a ( tiempo /3);
super . e s t u d i a ( tiempo /3);

}

}

1
2
3
4
5
6
7

1
2
3
4
5
6
7
8
9
10

Luis Fernando Llana Díaz

Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid

Herencia

Objeto this

public class Fecha {

. . . . . . . . . . . . . . . . . . . .
public Fecha ( int dia , int mes , int anyo ) {

c o m p r u e b a F e c h a ( dia , mes , anyo );
d i a s D e s d e I n i c i o = c a l c u l a D i a s D e s d e I n i c i o ( dia , mes , anyo );

}

public Fecha () {

this (1 ,1 ,1998);

}
. . . . . . . . . . . . . . . . . . . .

}

}

class F e c h a T e r n a {
p r i v a t e int dia ;
p r i v a t e int mes ;
p r i v a t e int anyo ;
. . . . . . . . . . . . . . . . . . . . . .
public F e c h a T e r n a ( int dias ) {

this . dia = quedan +1;
this . mes = mes +1;
this . anyo = anyo ;

}
. . . . . . . .

1
2
3
4
5
6
7
8
9
10
11
12

1
2
3
4
5
6
7
8
9
10
11
12

Luis Fernando Llana Díaz

Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid

Herencia

Figuras planas

p a c k a g e g e o m e t r i a . f i g u r a s P l a n a s ;
public i n t e r f a c e F i g u r a P l a n a {

public b o o l e a n i n t e r s e c a C o n ( F i g u r a P l a n a otra );
public double d i s t a n c i a ( Punto p );

}

p a c k a g e g e o m e t r i a . f i g u r a s P l a n a s ;
public a b s t r a c t class S u p e r f i c i e i m p l e m e n t s F i g u r a P l a n a {

public a b s t r a c t b o o l e a n e s t a D e n t r o ( Punto P );
public a b s t r a c t double s u p e r f i c i e ();

}

1
2
3
4
5

1
2
3
4
5

Luis Fernando Llana Díaz

Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid

Herencia

Puntos

public class Punto i m p l e m e n t s F i g u r a P l a n a {

public Punto ( double x , double y ){

posX = x ; posY = y ;

}
public double d i s t a n c i a ( Punto otro ){

Vector v = new Vector ( this , otro );
return v . modulo ();

}
public b o o l e a n equals ( Object o ){

if ( o i n s t a n c e o f Punto ) {

Punto otro = ( Punto ) o ;
return ( this . posX == otro . posX ) && ( this . posY == otro . posY );

}
else return false ;

}
public b o o l e a n i n t e r s e c a C o n ( F i g u r a P l a n a otra ){

if ( otra i n s t a n c e o f Punto ) {

return this . equals ( otra );

}
else {

return otra . i n t e r s e c a C o n ( this );

}

}

}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

Luis Fernando Llana Díaz

Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid

Herencia

Método equals

Definido en Object, todos los objetos son subclase suya: todos
tienen definido el método equals.

public b o o l e a n equals ( Object o ){

if ( o i n s t a n c e o f Punto ) {

Punto otro = ( Punto ) o ;
return ( this . posX == otro . posX ) && ( this . posY == otro . posY );

}
else return false ;

}

1
2
3
4
5
6
7

Luis Fernando Llana Díaz

Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid

Herencia

Interfaces Comparable y Cloneable

public class Fecha i m p l e m e n t s Comparable , C l o n e a b l e {

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

public int c o m p a r e T o ( Object o ) {

if (!( o i n s t a n c e o f Fecha ))

return d i a s D e s d e I n i c i o -(( Fecha ) o ). d i a s D e s d e I n i c i o ;

}
public Fecha clone () {

Fecha fecha = new Fecha ();
fecha . d i a s D e s d e I n i c i o = this . d i a s D e s d e I n i c i o ;
return fecha ;

}

. . . . . . . . . . . . . . . . . . . . . . .

}

throw new C l a s s C a s t E x c e p t i o n ( " Se r e q u i e r e un objeto de clase fecha . Fecha . " +

" He r e c i b i d o algo de clase " + o .
  • Links de descarga
http://lwp-l.com/pdf2467

Comentarios de: Herencia (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad