Documente Academic
Documente Profesional
Documente Cultură
INTEGRANTES DE EQUIPO:
"
GRADO: 2
GRUPO: 201
UNIDAD: 5
CARRERA: ING. INFORMATICA
Herencia y polimorfismo.
5.1 Concepto de herencia y polimorfismo.
5.2 Definicin de una clase base.
5.3 Definicin de una clase derivada.
5.4 Clases abstractas.
5.5 Definicin de herencia mltiple.
5.6 Implementacin de herencia mltiple.
5.7 Reutilizacin de la definicin de paquetes /libreras.
(
1)
2)
5. HERENCIA Y POLIMORFISMO
Contenido
5.1 Concepto de herencia y polimorfismo..................................................................1
5.6 Implementacin de herencia mltiple...................................................................13
Herencia y polimorfismo.
5.1 Concepto de herencia y polimorfismo.
5.2 Definicin de una clase base.
5.3 Definicin de una clase derivada.
5.4 Clases abstractas.
5.5 Definicin de herencia mltiple.
5.6 Implementacin de herencia mltiple.
5.7 Reutilizacin de la definicin de paquetes /libreras.
5.8 Clases genricas (Plantillas).
subclase
extends
superclase
3)
Animal
Mamfero
Terrestre
Ovparo
Acuticos
Felinos
Gatos
4)
Vivparo
Persona
Estudiante
Medio superior
Regulares
Irregulares
Empleado
Superior
Regulares
Obrero
Turno
Irregulares
(
Gerente
5)
Fsica
Acstica
Sonido
ptica
Luz
Propiedades
(
6)
Materia condensada
Slidos
Lquidos
Herencia
POO
Herencia
Simple
Abstraccin
Polimorfismo
Encapsulamiento
Compuesta
Polimorfismo
Llamar a un mtodo igual que otros pero con diferentes parmetros.
Realizar un programa que lea la cantidad en gramos del peso de 2 productos a y b, y en u
mtodo calcule el promedio del peso de los q productos.
//clase de clculo de promedio de peso.
class peso {
private double a;
private double b;
private double promedio;
public peso ( )
{
a=0;
(
7)
b=0;
promedio=0;
}
public void asignaciones ( double a1, double b1)
{
a=a1;
b=b1;
}
public void calcular( )
{
promedio=(a+b)/2;
System.out.prontln(El promedio es+ promedio);
}
8)
Ejemplo:
class ventana
{
private int x;
private int y;
private double ancho;
private double altura;
private boolean estado;
public ventana ( )
{
x=3;
y=5;
ancho=13;
altura=10;
}
public mostrar (int x1, int y1)
{
x=x1;
y=y1;
System.out.println(Posicion x+x1);
System.out.println(Posicion y+y1);
}
}
9)
y=15;
ancho=40;
altura=20;
}
public void mostrar (String titulo, int x1, int y1,double a, double b)
{
System.out.println(titulo+ titulo);
System.out.println(x+ x1);
System.out.println(y+ y1);
System.out.println(ancho+ a);
System.out.println(altura+ b);
}}
Figura
Cuadriltero
CuadradoRectngulo
Triangulo
Issceles
(
)
Cuadrilatero
10
Circulo
Escaleno
class figura
{
private doubl area, permetro;
private String color;
figura ( )
{
area=0;
permetro=0;
color=White;
}
public void dibujar ( )
{
System.out.println(Dibujar la figura);
}
public class circulo extends figura
{
private doubl radio;
circulo ( )
{
Mtodo
abstracto
radio=0;
area=0;
permetro=0;
color=red;
}
public void dibujar ( )
{
System.out.println(Dibuja el circulo);
System.out.println(Radio);
radio=Double.parseDouble(lectura.readLine());
}
(
)
11
}
Realiza el diagrama que corresponda a la clase materia y representa la herencia que
quieras.
Realiza el cdigo de la clase base y de una de la clase derivada.
Materia
Bsicas
Matemticas
Calculo Algebra
Especialidad
Contabilidad
Financiera
class materia
{
private String nombre;
private int unidad;
private doubl calificacin, promedio;
}
materia ( )
{
nombre= ;
unidad=0;
(
)
12
Programacin
Fundamentos
POO
calificacin=0;
promedio=0;
}
public void promedio( )
{
System.out.println(calcular promedio);
}
public class bsicas extends materia
{
private int cant_unid;
bsicas ( )
{
cant_unid=0;
nombre= ;
unidad=0;
calificacin=0;
promedio=0;
}
public void promedio ( )
{
System.out.println(Calcular promedio);
System.out.println(Cantidad de unidades);
cant_unid=Integer.parseInt(lectura.readLine());
promedio=calificacin/cant_unid;}}
5.5 Definicin de herencia mltiple
A
C
C
(
)
D
A
13
PRODUCTOR
DIRECTOR
MAESTRO
CANTANTE
AUTOR
PRODUCTOR/DIRECTOR
Distribuidor
(
)
14
Cantante
Agricultor
Comerciante/productor
Comerciante
Productor
15
16
}
class C extends A {
public void algo() {
super.algo();
System.out.println("C");
}
public void otro() {
System.out.println("Otro");
}
}
class D extends C, B {
public void algo() {
super.hace();
super.otro();
System.out.println("D");
}
}
17
18
En el diseo del modelo se han incorporado nuevos elementos. Aparece una interface iB,
que es implementada por las clases B y D. As, la relacin de herencia entre las clase D y
B del modelo original, se ha reemplazado por la implementacin de la interface comn iB,
por parte de las clases B y D, en tanto que D mantiene la relacin de herencia con C,
simulndose de esta forma la herencia mltiple de las clases B y C. Adems, se ha
incorporado una relacin de agregacin bidireccional entre las clases B y D. La necesidad
de esto ltimo resultar evidente ms adelante, por lo que en la primera versin que se
muestra, slo aparece implementada como una relacin unidireccional.
class A {
public void algo() {
System.out.println("A");
}
}
(
)
19
interface iB {
public void algo();
public void hace();
}
class B extends A implements iB {
public void algo() {
super.algo();
System.out.println("B");
}
public void hace() {
System.out.println("Hace");
}
}
class C extends A {
public void algo() {
super.algo();
System.out.println("C");
}
public void otro() {
System.out.println("Otro");
}
}
(
)
20
iB obj;
if (alguna condicin) obj = new B();
else obj = new D();
obj.algo();
Si el mtodo algo() no se declara en la interface, como una variable del tipo iB puede
referenciar objetos de las clases B o D, la activacin del mtodo algo() sera invlida, ya
(
)
21
El concepto de herencia implica que un objeto de una clase derivada, es una forma ms
especializada de un objeto de la clase base de la cual deriva; esto hace que crear un
objeto de una subclase, requiera la creacin de un objeto (subobjeto) perteneciente a la
superclase (Budd, 2002). En Java esa es la funcin del mtodo super(), cuando se activa
desde el constructor de una clase derivada. Por lo tanto desde el punto de vista de cmo
es construido un objeto de una clase derivada, se puede decir que est compuesto por un
objeto (subobjeto) de la clase de la cual deriva. Es interesante observar que esto es as,
an cuando la clase de la cual se hereda sea abstracta. Por lo tanto la restriccin de no
poder crear objetos de una clase abstracta, no es aplicable para la construccin del
subojeto que forma parte de un objeto de una clase derivada.
22
Estos patrones sirven para modificar el comportamiento de otra clase, operando como
una cobertura sobre la clase encapsulada, que es la que en realidad realiza el trabajo.
Finalmente como se puede observar, cualquier modificacin que se realice en los mtodos
de la clase B, se va a propagar a la clase derivada D. La redefinicin de mtodos y el
comportamiento polimrfico, se garantizan a travs de la definicin de la interface iB, y
del uso de referencias a esta ltima, en lugar de hacerlo con B.
(
)
23
Existen dentro de su librera clases grficas (awt y swing), las cuales permiten crear
objetos grficos comunes altamente configurables y con una arquitectura independiente
de la plataforma.
JBuilder
NetBeans
Fote4J
Jdeveloper
Eclipse
Oracle
PostgreSQL
MySQL
24
Compilacin y ejecucin.
Por ahora, digamos que cada clase debe estar definida en un archivo que debe llamarse
igual que la clase, con extensin .java
Es decir, la clase FiguraGeometrica debe declararse en un archivo llamado
FiguraGeometrica.java
/****************** HolaMundo.java******************/
class HolaMundo
{
25
/* HolaMundoApplet.java */
<HTML>
<HEAD>
<TITLE>Hello world</TITLE>
</HEAD>
<BODY>
<APPLET CODE="HolaMundoApplet.class
WIDTH=250 HEIGHT=100>
</APPLET>
</BODY>
</HTML>
26
Ahora veamos un par de ejemplos, una con salida por consola y otro mostrando un cuadro
de dilogo:
import javax.swing.*;
public class FiguraGeometricaFrame
{
public static void main(String[] args)
{
FiguraGeometrica figura = new FiguraGeometrica(6);
JOptionPane.showMessageDialog(null, "El numero de lados+
de la figura geomtrica es: "+
figura.getNumeroLados());
System.exit(0);
}
}
(
)
27
(
)
28