Herencia Java
Herencia de clases
Programación Orientada a Objetos
Facultad de Informática
Juan Pavón Mestras
Dep. Ingeniería del Software e Inteligencia Artificial
Universidad Complutense Madrid
Basado en el curso Objects First with Java - A Practical Introduction
using BlueJ, © David J. Barnes, Michael Kölling
Conceptos
Herencia declases
Subtipos
Sustitución
Polimorfismo: variables polimórficas
Construcciones del lenguaje Java:
extends
super
enmascaramiento (casting)
la clase Object
clases envoltorio (wrappers) de tipos primitivos
Juan Pavón Mestras
Facultad de Informática UCM, 2007-08
Programación Orientada a Objetos
2
El ejemplo DoME
DoME: "Database ofMultimedia Entertainment"
Aplicación que permite guardar información sobre discos
de música (CD) y películas (DVD)
CD: title, artist, # tracks, playing time, got-it, comment
DVD: title, director, playing time, got-it, comment
Y permite buscar información y sacar listados
Proyecto en chapter08/dome-v1 y dome-v2
Juan Pavón Mestras
Facultad de Informática UCM,2007-08
Programación Orientada a Objetos
3
Programación Orientada a Objetos
4
Los objetos de DoME
Juan Pavón Mestras
Facultad de Informática UCM, 2007-08
Las clases de DoME
campos
métodos
Juan Pavón Mestras
Facultad de Informática UCM, 2007-08
Programación Orientada a Objetos
5
Modelo de objetos de DoME
Juan Pavón Mestras
Facultad de Informática UCM,2007-08
Programación Orientada a Objetos
6
Modelo de clases de DoME
Juan Pavón Mestras
Facultad de Informática UCM, 2007-08
Programación Orientada a Objetos
7
Código fuente de la clase de los CD
public class CD
{
private String title;
private String artist;
private String comment;
CD(String theTitle, String theArtist)
{
title = theTitle;
artist = theArtist;
comment= " ";
}
void setComment(String newComment)
{ ... }
String getComment()
{ ... }
void print()
{ ... }
...
}
Juan Pavón Mestras
Facultad de Informática UCM, 2007-08
Programación Orientada a Objetos
8
Código fuente de la clase de los DVD
public class DVD
{
private String title;
private String director;
private String comment;
DVD(String theTitle, String theDirector)
{title = theTitle;
director = theDirector;
comment = " ";
}
void setComment(String newComment)
{ ... }
String getComment()
{ ... }
void print()
{ ... }
...
}
Juan Pavón Mestras
Facultad de Informática UCM, 2007-08
Programación Orientada a Objetos
9
Código fuente de la clase de la base de datos
class Database {
private ArrayList cds;
private ArrayList dvds;
...
public voidlist()
{
for(CD cd : cds) {
cd.print();
System.out.println();
}
for(DVD dvd : dvds) {
dvd.print();
System.out.println();
}
// empty line between items
// empty line between items
}
}
Juan Pavón Mestras
Facultad de Informática UCM, 2007-08
Programación Orientada a Objetos
10
Crítica de la v1 de DoME
Duplicación de código
Las clases CD y DVD son muyparecidas (casi idénticas)
Esto hace el mantenimiento difícil y más trabajoso
Riesgo de errores con un mantenimiento inadecuado
También hay duplicación de código en la clase Database
Juan Pavón Mestras
Facultad de Informática UCM, 2007-08
Programación Orientada a Objetos
11
Programación Orientada a Objetos
12
Uso de la herencia
Juan Pavón Mestras
Facultad deInformática UCM, 2007-08
Uso de la herencia
Se define una superclase : Item
Se definen subclases para Video y CD
La superclase define atributos comunes
Las subclases heredan los atributos de la superclase
Las subclases pueden tener sus propios atributos
Juan Pavón Mestras
Facultad de Informática UCM, 2007-08
Programación Orientada a Objetos
13
Jerarquías de...
Regístrate para leer el documento completo.