[código] Programación Orientada a Objetos: Herencia
En esta sección puedes descargar ejemplos de Herencia (Programación Orientada a Objetos), la cual es una forma de reutilización de software en la que nuevas clases se desarrollan rápida y fácilmente al absorber las caracterÃsticas de las clases existentes y agregar nuevas caracterÃsticas que sean apropiadas. También se muestran ejemplos introductorios sobre superclases y subclases, el modificador de acceso protected, las superclases directas e indirectas, el uso de constructores en superclases y subclases, y la ingenierÃa de software con herencia. Veámos entonces los tÃpicos ejemplos de aprendizaje para la Herencia:
Un objeto Punto
Este ejemplo posee 2 clases. La primera es la clase Punto:
// La declaración de la clase Punto representa un par de coordenadas x-y.
public class Punto {
private int x; // parte x de un par de coordenadas
private int y; // parte y de un par de coordenadas
// constructor sin argumentos
public Punto()
{
// la llamada implÃcita al constructor de Object ocurre aquÃ
}
// constructor
public Punto( int valorX, int valorY )
{
// la llamada implÃcita al constructor de Object ocurre aquÃ
x = valorX; // no hay necesidad de validación
y = valorY; // no hay necesidad de validación
}
// establecer x en el par de coordenadas
public void establecerX( int valorX )
{
x = valorX; // no hay necesidad de validación
}
// devuelve x del par de coordenadas
public int obtenerX()
{
return x;
}
// establecer y en el par de coordenadas
public void establecerY( int valorY )
{
y = valorY; // no hay necesidad de validación
}
// devuelve y del par de coordenadas
public int obtenerY()
{
return y;
}
// devuelve la representación String del objeto Punto
public String toString()
{
return "[" + x + ", " + y + "]";
}
} // fin de la clase Punto
Y la segunda es la clase PruebaPunto, que contiene el método main:
// Prueba de la clase Punto.
import javax.swing.JOptionPane;
public class PruebaPunto {
public static void main( String[] args )
{
Punto punto = new Punto( 72, 115 ); // crea objeto Punto
// obtener las coordenadas del punto
String salida = "La coordenada X es " + punto.obtenerX() +
"\nLa coordenada Y es " + punto.obtenerY();
punto.establecerX( 10 ); // establecer la coordenada x
punto.establecerY( 20 ); // establecer la coordenada y
// obtener la representación String del nuevo valor de punto
salida += "\n\nLa nueva ubicación de punto es " + punto.toString();
JOptionPane.showMessageDialog( null, salida ); // mostrar resultados
System.exit( 0 );
} // fin de main
} // fin de la clase PruebaPunto
Un objeto Circulo
Este ejemplo posee 2 clases. La primera es la clase Circulo:
// La clase Circulo contiene un par de coordenadas x-y y un radio.
public class Circulo {
private int x; // coordenada x del centro del cÃrculo
private int y; // coordenada y del centro del cÃrculo
private double radio; // radio del cÃrculo
// constructor sin argumentos
public Circulo()
{
// la llamada implÃcita al constructor de Object ocurre aquÃ
}
// constructor
public Circulo( int valorX, int valorY, double valorRadio )
{
// la llamada implÃcita al constructor de Object ocurre aquÃ
x = valorX; // no hay necesidad de validación
y = valorY; // no hay necesidad de validación
establecerRadio( valorRadio );
}
// establecer x en el par de coordenadas
public void establecerX( int valorX )
{
x = valorX; // no hay necesidad de validación
}
// devuelve la x del par de coordenadas
public int obtenerX()
{
return x;
}
// establecer y en el par de coordenadas
public void establecerY( int valorY )
{
y = valorY; // no hay necesidad de validación
}
// devuelve la y del par de coordenadas
public int obtenerY()
{
return y;
}
// establecer el radio
public void establecerRadio( double valorRadio )
{
radio = ( valorRadio < 0.0 ? 0.0 : valorRadio );
}
// devuelve el radio
public double obtenerRadio()
{
return radio;
}
// calcula y devuelve el diámetro
public double obtenerDiametro()
{
return 2 * radio;
}
// calcula y devuelve la circunferencia
public double obtenerCircunferencia()
{
return Math.PI * obtenerDiametro();
}
// calcula y devuelve el área
public double obtenerArea()
{
return Math.PI * radio * radio;
}
// devuelve representación String del objeto Circulo
public String toString()
{
return "Centro = [" + x + ", " + y + "]; Radio = " + radio;
}
} // fin de la clase Circulo
Y la segunda es la clase PruebaCirculo, que contiene el método main:
// Prueba de la clase Circulo.
import java.text.DecimalFormat;
import javax.swing.JOptionPane;
public class PruebaCirculo {
public static void main( String[] args )
{
Circulo circulo = new Circulo( 37, 43, 2.5 ); // crea el objeto Circulo
// obtener las coordenadas x-y y radio iniciales de Circulo
String salida = "La coordenada X es " + circulo.obtenerX() +
"\nLa coordenada Y es " + circulo.obtenerY() +
"\nEl radio es " + circulo.obtenerRadio();
circulo.establecerX( 35 ); // establecer la nueva coordenada x
circulo.establecerY( 20 ); // establecer la nueva coordenada y
circulo.establecerRadio( 4.25 ); // establecer el nuevo radio
// obtener la representación String del nuevo valor de circulo
salida += "\n\nLa nueva ubicación y el radio del cÃrculo son\n" +
circulo.toString();
// da formato a los valores de punto flotante con 2 dÃgitos de precisión
DecimalFormat dosDigitos = new DecimalFormat( "0.00" );
// obtener el diámetro del Circulo
salida += "\nEl diámetro es " +
dosDigitos.format( circulo.obtenerDiametro() );
// obtener la circunferencia del Circulo
salida += "\nLa circunferencia es " +
dosDigitos.format( circulo.obtenerCircunferencia() );
// obtener el área del Circulo
salida += "\nEl área es " + dosDigitos.format( circulo.obtenerArea() );
JOptionPane.showMessageDialog( null, salida ); // muestra la salida
System.exit( 0 );
} // fin de main
} // fin de la clase PruebaCirculo
JerarquÃa Punto -> Circulo
Este ejemplo posee 3 clases. La primera es la clase Punto2:
// La declaración de la clase Punto2 representa un par de coordenadas x-y.
public class Punto2 {
protected int x; // parte x de un par de coordenadas
protected int y; // parte y de un par de coordenadas
// constructor sin argumentos
public Punto2()
{
// la llamada implÃcita al constructor de Object ocurre aquÃ
}
// constructor
public Punto2( int valorX, int valorY )
{
// la llamada implÃcita al constructor de Object ocurre aquÃ
x = valorX; // no hay necesidad de validación
y = valorY; // no hay necesidad de validación
}
// establecer x en el par de coordenadas
public void establecerX( int valorX )
{
x = valorX; // no hay necesidad de validación
}
// devolver x del par de coordenadas
public int obtenerX()
{
return x;
}
// establecer y en el par de coordenadas
public void establecerY( int valorY )
{
y = valorY; // no hay necesidad de validación
}
// devolver y del par de coordenadas
public int obtenerY()
{
return y;
}
// devolver la representación String del objeto Punto
public String toString()
{
return "[" + x + ", " + y + "]";
}
} // fin de la clase Punto2
La segunda es la clase Circulo3:
// La clase Circulo3 hereda de Punto2 y tiene acceso a los miembros
// protected x e y de Punto2.
public class Circulo3 extends Punto2 {
private double radio; // el radio de Circulo3
// constructor sin argumentos
public Circulo3()
{
// la llamada implÃcita al constructor de Punto2 ocurre aquÃ
}
// constructor
public Circulo3( int valorX, int valorY, double valorRadio )
{
// la llamada implÃcita al constructor de Punto2 ocurre aquÃ
x = valorX; // no hay necesidad de validación
y = valorY; // no hay necesidad de validación
establecerRadio( valorRadio );
}
// establecer el radio
public void establecerRadio( double valorRadio )
{
radio = ( valorRadio < 0.0 ? 0.0 : valorRadio );
}
// return radio
public double obtenerRadio()
{
return radio;
}
// calcular y devolver el diámetro
public double obtenerDiametro()
{
return 2 * radio;
}
// calcular y devolver la circunferencia
public double obtenerCircunferencia()
{
return Math.PI * obtenerDiametro();
}
// calcular y devolver el área
public double obtenerArea()
{
return Math.PI * radio * radio;
}
// devolver la representación String de un objeto Circulo
public String toString()
{
return "Centro = [" + x + ", " + y + "]; Radio = " + radio;
}
} // fin de la clase Circulo3
Y la tercera es la clase PruebaCirculo3 que contiene el método main:
// Prueba de la clase Circulo3.
import java.text.DecimalFormat;
import javax.swing.JOptionPane;
public class PruebaCirculo3 {
public static void main( String[] args )
{
// crear instancia de objeto Circulo
Circulo3 circulo = new Circulo3( 37, 43, 2.5 );
// obtener coordenadas x-y y radio iniciales de Circulo3
String salida = "La coordenada X es " + circulo.obtenerX() +
"\nLa coordenada Y es " + circulo.obtenerY() +
"\nEl radio es " + circulo.obtenerRadio();
circulo.establecerX( 35 ); // establecer la nueva coordenada x
circulo.establecerY( 20 ); // establecer la nueva coordenada y
circulo.establecerRadio( 4.25 ); // establecer el nuevo radio
// obtener representación String del nuevo valor de circulo
salida += "\n\nLa nueva ubicación y radio de circulo son\n" +
circulo.toString();
// dar formato a los valores de punto flotante con 2 dÃgitos de precisión
DecimalFormat dosDigitos = new DecimalFormat( "0.00" );
// obtener el diámetro del Circulo
salida += "\nEl diámetro es " +
dosDigitos.format( circulo.obtenerDiametro() );
// obtener la circunferencia del Circulo
salida += "\nLa circunferencia es " +
dosDigitos.format( circulo.obtenerCircunferencia() );
// obtener el área del Circulo
salida += "\nEl área es " + dosDigitos.format( circulo.obtenerArea() );
JOptionPane.showMessageDialog( null, salida ); // mostrar salida
System.exit( 0 );
} // fin del método main
} // fin de la clase PruebaCirculo3
JerarquÃa Punto -> Circulo utilizando datos private
Este ejemplo posee 3 clases. La primera es la clase Punto3:
// La declaración de la clase Punto representa un par de coordenadas x-y.
public class Punto3 {
private int x; // parte x de un par de coordenadas
private int y; // parte y de un par de coordenadas
// constructor sin argumentos
public Punto3()
{
// la llamada implÃcita al constructor de Object ocurre aquÃ
}
// constructor
public Punto3( int valorX, int valorY )
{
// la llamada implÃcita al constructor de Object ocurre aquÃ
x = valorX; // no hay necesidad de validación
y = valorY; // no hay necesidad de validación
}
// establecer x en el par de coordenadas
public void establecerX( int valorX )
{
x = valorX; // no hay necesidad de validación
}
// devolver x del par de coordenadas
public int obtenerX()
{
return x;
}
// establecer y en el par de coordenadas
public void establecerY( int valorY )
{
y = valorY; // no hay necesidad de validación
}
// devolver y del par de coordenadas
public int obtenerY()
{
return y;
}
// devolver la representación String del objeto Punto3
public String toString()
{
return "[" + obtenerX() + ", " + obtenerY() + "]";
}
} // fin de la clase Punto3
La segunda es la clase Circulo4:
// La clase Circulo4 hereda de Punto3 y accede a las variables x e y
// de Punto 3 mediante los métodos public de Punto3.
public class Circulo4 extends Punto3 {
private double radio; // El radio de Circulo4
// constructor sin argumentos
public Circulo4()
{
// La llamada implÃcita al constructor de Punto3 ocurre aquÃ
}
// constructor
public Circulo4( int valorX, int valorY, double valorRadio )
{
super( valorX, valorY ); // llamar explÃcitamente al constructor de Punto3
establecerRadio( valorRadio );
}
// establecer el radio
public void establecerRadio( double valorRadio )
{
radio = ( valorRadio < 0.0 ? 0.0 : valorRadio );
}
// devolver el radio
public double obtenerRadio()
{
return radio;
}
// calcular y devolver el diámetro
public double obtenerDiametro()
{
return 2 * obtenerRadio();
}
// calcular y devolver la circunferencia
public double obtenerCircunferencia()
{
return Math.PI * obtenerDiametro();
}
// calcular y devolver el área
public double obtenerArea()
{
return Math.PI * obtenerRadio() * obtenerRadio();
}
// devolver la representación String del objeto Circulo4
public String toString()
{
return "Centro = " + super.toString() + "; Radio = " + obtenerRadio();
}
} // fin de la clase Circulo4
Y la tercera es la clase PruebaCirculo4 que contiene el método main:
// Prueba de la clase Circulo4.
import java.text.DecimalFormat;
import javax.swing.JOptionPane;
public class PruebaCirculo4 {
public static void main( String[] args )
{
// crear instancia de objeto Circulo
Circulo4 circulo = new Circulo4( 37, 43, 2.5 );
// obtener las coordenadas x-y y radio iniciales de Circulo4
String salida = "La coordenada X es " + circulo.obtenerX() +
"\nLa coordenada Y es " + circulo.obtenerY() +
"\nEl radio es " + circulo.obtenerRadio();
circulo.establecerX( 35 ); // establecer la nueva coordenada x
circulo.establecerY( 20 ); // establecer la nueva coordenada y
circulo.establecerRadio( 4.25 ); // establecer el nuevo radio
// obtener la representación String del nuevo valor de circulo
salida += "\n\nLa nueva ubicación y radio de circulo son\n" +
circulo.toString();
// dar formato a los valores de punto decimal con 2 dÃgitos de precisión
DecimalFormat dosDigitos = new DecimalFormat( "0.00" );
// obtener el diámetro del Circulo
salida += "\nEl diámetro es " +
dosDigitos.format( circulo.obtenerDiametro() );
// obtener la circunferencia del Circulo
salida += "\nLa circunferencia es " +
dosDigitos.format( circulo.obtenerCircunferencia() );
// obtener el área de Circulo
salida += "\nEl área es " + dosDigitos.format( circulo.obtenerArea() );
JOptionPane.showMessageDialog( null, salida ); // mostrar resultados
System.exit( 0 );
} // fin de main
} // fin de la clase PruebaCirculo4









Merly Ventura dice:
Noviembre 8th, 2008 a las 6:13 pm
programacion orientada a objetos