Sei sulla pagina 1di 59

Unidad II.

Lenguaje de
Programacin Orientado a
Objetos.

Segunda Parte
Contenido
1. Implementacin de Estructuras de Datos
2. Implementacin de clases
3. Implementacin de asociaciones y
dependencia
4. Implementacin de Herencia y Polimorfismo
Implementacin de Herencia
Herencia
Clases son creadas a partir de otras clases existentes
Heredan atributos y funcionalidad
Pueden agregar nuevas caractersticas
Convertible hereda de Automobil
Subclases heredan de las superclases
Subclase con frecuencia agrega variables de instancia y
mtodos
Herencia simple y mltiple
Java no soporta herencia mltiple
La relacin se interpreta como Es un
Relacin entre los objetos de la
superclase y los objetos de la subclase
Objetos de la subclase
Pueden ser tratados como objetos de la
superclase
No se aplica al contrario
Una Figura no siempre es un Circulo
Cada clase implicitamente hereda de
java.lang.Object
A menos que se especifique lo contrario en la primera
lnea de definicin de la clase
Miembros protegidos: protected
Acceso a miembros protected
Este nivel de proteccin se bica entre public y
private
Estos miembros son accesible solo por:
Mtodos de la Superclase
Mtodos de la Subclase
Mtodos de clases en el mismo paquete
Acceso de paquete (package access)
Acceso de paquete: los miembros protegidos
solo son accesibles desde los objetos de una
subclase o de una clase del mismo paquete
// Definicin de la clase Punto
public class Punto {
protected int x, y; // coordenadas del punto
public Punto() // constructor sin argumento
{
//llamada implcita al constructor de la superclase
setPunto( 0, 0 );
}
public Punto( int coordenadX, int coordenadaY )
{
//llamada implcita al constructor de la superclase
setX( coordenadX ); setY( coordenadaY );
}
Ejemplo de Protected:
Superclase Punto
Ejemplo de Protected: Superclase Punto
public void setX(int coordenadaX)
{
x = coordenadaX;
}
public int getX()
{
return x;
}
public void setY(int coordenadaY)
{
y = coordenadaY;
}
public int getY()
{
return y;
}
public String toString()
{
return "[" + x + ", " + y + "]";
}
} // fin de la clase Punto
Ejemplo de Protected: Subclase Circulo
// Definicin de la clase Circulo
public class Circulo extends Punto { // hereda de Punto
protected double radio;
public Circulo() // constructor sin argumentos
{
setRadio( 0 ); // llamada implicita al constructor de superclase
}
public Circulo( double valorRadio, int coordenadaX,
int coordenadaY ) // constructor
{
// llamada explicita al constructor de superclase
super( coordenadaX, coordenadaY);
// asignar radio
setRadio( valorRadio );
}

public void setRadio( double valorRadio )
{
radio = ( valorRadio >= 0.0 ? valorRadio : 0.0 );
}
public double getRadio()
{
return radio;
}
public double calcularArea() // calcula area del Circulo
{
return Math.PI * radio * radio;
}
public String toString() // convierte el Circulo a String
{
return "Centro = "+ "[" + x + ", " + y + "]"+ "; Radio = " + radio;
}
} // fin de clase Circulo
Ejemplo de Protected: Subclase Circulo
Clase Circulo.java
Un Circulo es una subclase de Punto.
Un Circulo hereda de clase Punto:
variables de instancia protegidas
mtodos pblicos (excepto el o los constructores)
Realiza una llamada implcita al constructor de la
superclase Punto.
Realiza una llamada explcita al constructor de la
superclase Punto.
Sobreescribe el mtodo toString() de la clase Punto
al usar el mismo prototipo del mtodo.
10
Ejemplo de Protected: Subclase Circulo
Ejemplo de Protected: Clase PruebaCirculo
// Clase PruebaCirculo
// Java core packages
import java.text.DecimalFormat;
// Java extension packages
import javax.swing.JOptionPane;

public class PruebaCirculo{
public static void main( String args[] )
{
Punto punto1, punto2;
Circulo circulo1, circulo2;

punto1 = new Punto( 30, 50 );
circulo1 = new Circulo( 2.7, 120, 89 );

Ejemplo de Protected: Clase PruebaCirculo
String salida = "Punto punto1: " + punto1.toString() +
"\nCirculo circulo1: " + circulo1.toString();

// utiliza una relacion es un para referirse a un Circulo
// usando como referencia un Punto
punto2 = circulo1; //se asigna un Circulo a la referencia de Punto
salida += "\n\nCirculo circulo1(ubicado en referencia de punto2):" +
punto2.toString();

// Para asignar el circulo que esta almacenado en punto2,
//se utilizara downcasting (casting una referencia de superclase
//al tipo de dato de la subclase)
circulo2 = ( Circulo ) punto2;
Ejemplo de Protected: Clase PruebaCirculo
salida += "\n\nCirculo circulo1 (ubicado en la referencia de
circulo2): " + circulo2.toString();
DecimalFormat precision2 = new DecimalFormat( "0.00" );
salida += "\nArea del circulo1 (ubicado en la referencia de
circulo2): " + precision2.format( circulo2.area() );
// Intento de referir a un objeto Punto con referencia de Circulo
if ( punto1 instanceof Circulo ) {
circulo2 = ( Circulo ) punto1;
salida += "\n\ncasting realizado exitosamente"; }
else
salida += "\n\npunto1 no hace referencia a un Circulo";
JOptionPane.showMessageDialog( null, salida,"Demostracion de
la relacion \es un\" ", JOptionPane.INFORMATION_MESSAGE );
System.exit( 0 );
}
} // fin de la clase PruebaCirculo
Clase PruebaCirculo.java
Crea dos referencias a objetos de tipo Punto y dos de tipo Circulo
Un circulo invoca el mtodo sobreescrito toString
Una variable de superclase hace referencia a un objeto de subclase
Un Punto invoca el mtodo toString sobreescrito de la clase Circulo
Se convierte el objeto circulo (referenciado por un Punto), a un
objeto Circulo, utilizando downcasting
Circulo invoca el mtodo calcularArea()
Usar el mtodo instanceof() para determinar si un Punto hace
referencia a un Circulo
Si un Punto hace referencia a un Circulo, se puede aplicar el casting
a un Punto para convertirlo a Circulo
circulo2 = ( Circulo ) punto1;

14
Ejemplo de Protected: Clase PruebaCirculo
Polimorfismo
Polimorfismo
Los programas generalmente procesan los objetos
como objetos de las superclases
Fcilmente se pueden agregar clases a las aplicaciones
Las clases deben ser parte de una jerarqua de herencia
Enlace dinmico de los mtodos
Implementa el procesamiento polimrfico de los objetos
Utiliza una referencia a la superclase para referenciar un
objeto de la subclase
El programa selecciona el mtodo correcto del objeto de la
subclase

Ejemplo de Enlace Dinmico
de los mtodos
Por ejemplo,
Superclase Figura
Subclases Circulo, Rectangulo y Cuadrado
cada clase se dibuja ella misma de acuerdo al tipo
de clase
Figura tiene el mtodo dibujar
Cada subclase ha sobreescrito el mtodo dibujar
En una llamada al mtodo dibujar de la superclase
Figura
El programa determina dinmicamente cual mtodo
dibujar de las subclases es invocado
Superclases abstractas y clases
concretas
Clases abstractas
No se pueden crear objetos
Son muy genricas para definir objetos reales
Figura2D
Proveen una superclase de la cual otras clases pueden
heredar
Se les conoce como superclases abstractas
Clases concretas
Clases desde las cuales los objetos son instanciados
Especifican como crear objetos
Cuadrado, Circulo y Triangulo
Ejemplo con Clases
Abstractas
Establecer una Jerarqua de herencia
entre: Punto, Circulo, Cilindro
Modificar la Jerarqua incluyendo una
superclase abstracta Figura
Demostracin del polimorfismo
Contiene el mtodo abstracto getNombre
Cada subclase debe implementar el mtodo
getNombre
Contiene los mtodos (no abstractos)
calcularArea y calcularVolumen
Retornan 0 por omisin
Cada subclase sobreescribe estos mtodos
Ejemplo de Polimorfismo: Clase Abstracta Figura
//Definicion de la clase abstracta Figura
public abstract class Figura extends Object {
// calcula el area de la figura
public double calcularArea()
{
return 0.0;
}

// calcula el volumen de la figura
public double calcularVolumen()
{
return 0.0;
}

// metodo abstracto debe ser definido por las subclases concretas
// para retornar el nombre apropiado
public abstract String getNombre();

} // fin de la clase Figura
Clase abstracta Figura.java
Figura no puede ser instanciada
Las clases abstractas pueden heredar mtodos
concretos para las subclases
Las subclases concretas deben implementar el
mtodo getNombre()
20
Ejemplo de Polimorfismo: Clase Abstracta Figura
Ejemplo de Polimorfismo: Clase Punto
//Definicion de la clase Punto
public class Punto extends Figura {
protected int x, y; // coordenadas del Punto
// constructor sin argumentos
public Punto()
{
setPunto( 0, 0 );
}
// constructor
public Punto( int coordenadaX, int coordenadaY )
{
setPunto( coordenadaX, coordenadaY );
}
// Asignar las coordenadas x y y del Punto
public void setPunto( int coordenadaX, int coordenadaY )
{
x = coordenadaX; //setX() y
y = coordenadaY; //setY(), ambos en un solo metodo
}
Ejemplo de Polimorfismo: Clase Punto
public int getX() // recuperar coordenada x
{
return x;
}
public int getY() // recuperar coordenada y
{
return y;
}
// convierte el Punto a su representacion en String
public String toString()
{
return "[" + x + ", " + y + "]";
}
// retorna el nombre de la figura
public String getNombre()
{
return "Punto";
}
} // fin de la clase Punto
Clase Punto.java
Punto hereda los mtodos pblicos de Figura
Los miembros protegidos solo pueden ser accedidos
por los objetos de las subclases de Punto o de las
clases del mismo paquete
Punto implementa el mtodo abstracto getNombre
Punto no sobreescribe el mtodo calcularArea y
calcularVolumen, porque no posee area ni volumen
23
Ejemplo de Polimorfismo: Clase Punto
Ejemplo de Polimorfismo: Clase Circulo
//Definicion de la clase Circulo
public class Circulo extends Punto { // hereda de Punto
protected double radio;
public Circulo() //constructor sin argumentos
{
// llamada implicita al constructor de la superclase aqui
setRadio( 0 );
}
// constructor
public Circulo( double valorRadio, int coordenadaX, int coordenadaY )
{
// invoca el constructor de la superclase
super( coordenadaX, coordenadaY );
setRadio( valorRadio );
}
// asignar radio del Circulo
public void setRadio( double valorRadio )
{
radio = ( valorRadio >= 0 ? valorRadio : 0 );
}
Ejemplo de Polimorfismo: Clase Circulo
// recuperar radio del Circulo
public double getRadio()
{
return radio;
}
public double calcularArea() // calcula area del Circulo
{
return Math.PI * radius * radius;
}
// convierte el Circulo a su representacion en String
public String toString()
{
return "Centro = " + super.toString() +
"; Radio = " + radio;
}
public String getNombre() // retorna nombre de la Figura
{
return "Circulo";
}
} // fin de la clase Circulo
Clase Circulo.java
Circulo hereda las variables y mtodos de Punto y
Figura
Define mtodos para recuperar/asignar los valores
protected
Sobreescribe el mtodo calcularArea, no as el
mtodo calcularVolumen, ya que no posee volumen
Implementa el mtodo abstracto getNombre
26
Ejemplo de Polimorfismo: Clase Circulo
Ejemplo de Polimorfismo: Clase Cilindro
//Definicion de la clase Cilindro
public class Cilindro extends Circulo {
protected double altura; // altura del Cilindro
public Cilindro() //constructor sin argumentos
{
// llamada implicita al constructor de la superclase aqui
setAltura( 0 );
}

// constructor
public Cilindro( double alturaCilindro, double radioCilindro,
int coordenadaX, int coordenadaY)
{
// invoca el contrusctor de la superclase
super( radioCilindro, coordenadaX, coordenadaY );
setAltura( alturaCilindro );
}
Ejemplo de Polimorfismo: Clase Cilindro
// asignar altura del Cilindro
public void setAltura( double alturaCilindro )
{
altura = ( alturaCilindro >= 0 ? alturaCilindro : 0 );
// recupera altura del Cilindro
public double getAltura()
{
return altura;
}
// calcula el area del Cilindro ( area de la superficie )
public double calcularArea()
{
return 2 * super.calcularArea() + 2 * Math.PI * radio * altura;
}

// calcula el volumen del Cilindro
public double calcularVolumen()
{
return super.calcularArea() * altura;
}
Ejemplo de Polimorfismo: Clase Cilindro

// convierte el Cilindro a su representacin en String
public String toString()
{
return super.toString() + "; altura = " + altura;
}

// retorna el nombre de la Figura
public String getNombre()
{
return "Cilindro";
}

} // fin de clase Cilindro
Clase Cilindro.java
Cilindro hereda las variables y mtodos de Punto,
Circulo y Figura
Sobreescribe los mtodos calcularArea y
calcularVolumen
Implementa el mtodo abstracto getNombre de
Figura
30
Ejemplo de Polimorfismo: Clase Cilindro
Ejemplo de Polimorfismo: Clase Prueba
// Clase Prueba.java
// Clase que prueba la jerarquia de Figura, Punto, Circulo y Cilindro
// Java core packages
import java.text.DecimalFormat;
// Java extension packages
import javax.swing.JOptionPane;

public class Prueba {
// Prueba la jerarquia de Figura
public static void main( String args[] )
{
// crear Figuras
Punto punto = new Punto( 7, 11 );
Circulo circulo = new Circulo( 3.5, 22, 8 );
Cilindro cilindro = new Cilindro( 10, 3.3, 10, 10 );

// crear arreglo de Figuras
Figura arregloDeFiguras[] = new Figura[ 3 ];

Ejemplo de Polimorfismo: Clase Prueba
// arregloDeFiguras[0] apunta a un objeto de la subclase Punto
arregloDeFiguras[0] = punto;

// arregloDeFiguras[1] apunta a un objeto de la subclase Circulo
arregloDeFiguras[1] = circulo

// arregloDeFiguras[2] apunta a un objeto de la subclase Cilindro
arregloDeFiguras[2] = cilindro; // Obtener de cada Figura su
//nombre y su representacion en String
String salida =
punto.getNombre() + ": " + punto.toString() + "\n" +
circulo.getNombre() + ": " + circulo.toString() + "\n" +
cilindro.getNombre() + ": " + cilindro.toString();

DecimalFormat precision2 = new DecimalFormat( "0.00" );

Ejemplo de Polimorfismo: Clase Prueba
// ciclo sobre el arregloDeFiguras y recupera el nombre
// area y volumen de cada Figura en el arregloDeFiguras
for ( int i = 0; i < arregloDeFiguras.length; i++ ) {
salida += "\n\n" + arregloDeFiguras [ i ].getNombre() +
": " + arregloDeFiguras [ i ].toString() +
"\nArea = " +
precision2.format(arregloDeFiguras[ i ].calcularArea() ) +
"\nVolumen = " +
precision2.format(arregloDeFiguras[ i ].calcularVolumen() );
}

JOptionPane.showMessageDialog( null, salida,
Demostracion de Polimorfismo",
JOptionPane.INFORMATION_MESSAGE );

System.exit( 0 );
}
} // fin de clase Prueba
Clase Prueba.java
Crea un objeto de cada subclase de la superclase
Figura
Crea un arreglo de tres variables de tipo Figura para
referenciar cada objeto de las subclases
Enlaza dinmicamente el mtodo getNombre
Enlaza dinmicamente el mtodo calcularArea para
los objetos de Circulo y Cilindro
Enlaza dinmicamente el mtodo calcularVolumen
para el objeto de Cilindro

34
Ejemplo de Polimorfismo: Clase Prueba
Ejecucin de Prueba.java
Punto: [7, 11]
Circulo: Centro = [22, 8]; Radio = 3.5
Cilindro: Centro = [10, 10]; Radio = 3.3; Altura = 10.0

Punto: [7, 11]
Area = 0.00
Volumen = 0.00

Circulo: Centro = [22, 8]; Radio = 3.5
Area = 38.48
Volumen = 0.00

Cilindro: Centro = [10, 10]; Radio = 3.3; Altura = 10.0
Area = 275.77
Volumen = 342.12
Ejemplo creando y usando
Interfaces
Utilizar la interface Figura
Substituir la clase abstracta Figura
Interface
Su definicin inicia con la palabra
interface
Las clases implementan una interface
(es decir, sus mtodos)
Contiene mtodos publicos y
abstractos
Las clases (que implementan la interface)
deben implementar estos mtodos

Ejemplo de Polimorfismo: Interface Figura
//Definicion de la Interface Figura
public Interface Figura extends Object {
// calcula el area de la figura
public double calcularArea() ;

// calcula el volumen de la figura
public double calcularVolumen() ;

// retorna el nombre de la figura
public abstract String getNombre();

} // fin de la interface Figura
Interface Figura.java
Las clases que implementen la interface Figura
deben implementar sus mtodos.
38
Ejemplo de Polimorfismo: Interface Figura
Ejemplo de Polimorfismo: Clase Punto
//Definicion de la clase Punto
public class Punto extends Object implements Figura {
protected int x, y; // coordenadas del Punto
// constructor sin argumentos
public Punto()
{
setPunto( 0, 0 );
}
// constructor
public Punto( int coordenadaX, int coordenadaY )
{
setPunto( coordenadaX, coordenadaY );
}
// Asignar las coordenadas x y y del Punto
public void setPunto( int coordenadaX, int coordenadaY )
{
x = coordenadaX;
y = coordenadaY;
}
Ejemplo de Polimorfismo: Clase Punto
public int getX() // recuperar coordenada x
{
return x;
}
public int getY() // recuperar coordenada y
{
return y;
}
// convierte el Punto a su representacion en String
public String toString()
{
return "[" + x + ", " + y + "]";
}

// calcula el area de la figura
public double calcularArea()
{
return 0.0;
}
Ejemplo de Polimorfismo: Clase Punto

// calcula el volumen
public double calcularVolumen()
{
return 0.0;
}

// retorna el nombre de la figura
public String getNombre()
{
return "Punto";
}

} // fin de la clase Punto
Clase Punto.java
Punto implementa la interface Figura
Punto implementa los mtodos especificados en la
interface Figura
42
Ejemplo de Polimorfismo: Clase Punto
Ejemplo de Polimorfismo: Clase Circulo
//Definicion de la clase Circulo
public class Circulo extends Punto { // hereda de Punto
protected double radio;
public Circulo() //constructor sin argumentos
{
// llamada implicita al constructor de la superclase aqui
setRadio( 0 );
}
// constructor
public Circulo( double radioCirculo, int coordenadaX, int coordenadaY )
{
// invoca el constructor de la superclase
super( coordenadaX, coordenadaY );
setRadio( radioCirculo );
}
// asignar radio del Circulo
public void setRadio( double radioCirculo )
{
radio = (radioCirculo >= 0 ? radioCirculo : 0 );
}
Ejemplo de Polimorfismo: Clase Circulo
// recuperar radio del Circulo
public double getRadio()
{
return radio;
}
public double calcularArea() // calcula area del Circulo
{
return Math.PI * radius * radius;
}
// convierte el Circulo a su representacion en String
public String toString()
{
return "Centro = " + super.toString() +
"; Radio = " + radio;
}
public String getNombre() // retorna nombre de la Figura
{
return "Circulo";
}
} // fin de la clase Circulo
Clase Circulo.java
Circulo hereda las variables y mtodos de Punto,
incluyendo las implementaciones de la interface
Figura
Sobreescribe el mtodo toString
Sobreescribe los mtodos calcularArea y getNombre,
no as el mtodo calcularVolumen

45
Ejemplo de Polimorfismo: Clase Circulo
Ejemplo de Polimorfismo: Clase Cilindro
//Definicion de la clase Cilindro
public class Cilindro extends Circulo {
protected double altura; // altura del Cilindro
public Cilindro() //constructor sin argumentos
{
// llamada implicita al constructor de la superclase aqui
setAltura( 0 );
}

// constructor
public Cilindro( double alturaCilindro, double radioCilindro,
int coordenadaX, int coordenadaY)
{
// invoca el contrusctor de la superclase
super( radioCilindro, coordenadaX, coordenadaY );
setAltura( alturaCilindro );
}
Ejemplo de Polimorfismo: Clase Cilindro
// asignar altura del Cilindro
public void setAltura( double alturaCilindro )
{
altura = ( alturaCilindro >= 0 ? alturaCilindro : 0 );
// recupera altura del Cilindro
public double getAltura()
{
return altura;
}
// calcula el area del Cilindro ( area de la superficie )
public double calcularArea()
{
return 2 * super.calcularArea() + 2 * Math.PI * radio * altura;
}

// calcula el volumen del Cilindro
public double calcularVolumen()
{
return super.calcularArea() * altura;
}
Ejemplo de Polimorfismo: Clase Cilindro

// convierte el Cilindro a su representacin en String
public String toString()
{
return super.toString() + "; Altura = " + altura;
}

// retorna el nombre de la Figura
public String getNombre()
{
return "Cilindro";
}

} // fin de clase Cilindro
Clase Cilindro.java
Cilindro hereda las variables y mtodos de Punto,
Circulo y las implementaciones de la interface Figura
Sobreescribe el mtodo toString
Sobreescribe los mtodos calcularArea,
calcularVolumen y getNombre
49
Ejemplo de Polimorfismo: Clase Cilindro
Ejemplo de Polimorfismo: Clase Prueba
// Clase Prueba.java
// Clase que prueba la jerarquia de Punto, Circulo y Cilindro,
// con la interface Figura
// Java core packages
import java.text.DecimalFormat;
// Java extension packages
import javax.swing.JOptionPane;

public class Prueba {
// Prueba la jerarquia de Punto con la interface Figura
public static void main( String args[] )
{
// crear Figuras
Punto punto = new Punto( 7, 11 );
Circulo circulo = new Circulo( 3.5, 22, 8 );
Cilindro cilindro = new Cilindro( 10, 3.3, 10, 10 );

// crear arreglo de Figuras
Figura arregloDeFiguras[] = new Figura[ 3 ];
Ejemplo de Polimorfismo: Clase Prueba
// arregloDeFiguras[0] apunta a un objeto de la subclase Punto
arregloDeFiguras[0] = punto;

// arregloDeFiguras[1] apunta a un objeto de la subclase Circulo
arregloDeFiguras[1] = circulo

// arregloDeFiguras[2] apunta a un objeto de la subclase Cilindro
arregloDeFiguras[2] = cilindro; // Obtener de cada Figura su
//nombre y su representacion en String
String salida =
punto.getNombre() + ": " + punto.toString() + "\n" +
circulo.getNombre() + ": " + circulo.toString() + "\n" +
cilindro.getNombre() + ": " + cilindro.toString();

DecimalFormat precision2 = new DecimalFormat( "0.00" );

Ejemplo de Polimorfismo: Clase Prueba
// ciclo sobre el arregloDeFiguras y recupera el nombre
// area y volumen de cada Figura en el arregloDeFiguras
for ( int i = 0; i < arregloDeFiguras.length; i++ ) {
salida += "\n\n" + arregloDeFiguras [ i ].getNombre() +
": " + arregloDeFiguras [ i ].toString() +
"\nArea = " +
precision2.format(arregloDeFiguras[ i ].calcularArea() ) +
"\nVolumen = " +
precision2.format(arregloDeFiguras[ i ].calcularVolumen() );
}

JOptionPane.showMessageDialog( null, salida,
Demostracion de Polimorfismo",
JOptionPane.INFORMATION_MESSAGE );

System.exit( 0 );
}
} // fin de clase Prueba
Clase Prueba.java
Es idntica a la clase utilizada en el ejemplo con la
clase abstracta Figura
La salida es idntica a la presentada en el ejemplo
con la clase abstracta Figura
53
Ejemplo de Polimorfismo: Clase Prueba
Ejecucin de Prueba.java
con interface Figura
Punto: [7, 11]
Circulo: Centro = [22, 8]; Radio = 3.5
Cilindro: Centro = [10, 10]; Radio = 3.3; Altura = 10.0

Punto: [7, 11]
Area = 0.00
Volumen = 0.00

Circulo: Centro = [22, 8]; Radio = 3.5
Area = 38.48
Volumen = 0.00

Cilindro: Centro = [10, 10]; Radio = 3.3; Altura = 10.0
Area = 275.77
Volumen = 342.12
Como declarar una clase para que sea reutilizada
Declararla como una clase pblica
Agregar una declaracin del paquete (package) al
archivo del cdigo fuente
Normalmente se escribe en minusculas
Debe ser la primera instruccin ejecutable en el archivo
El nombre del paquete debera consistir del nombre de los
directorios en la estructura del paquete
Ejemplo: banco.cuentas
El nombre del paquete es parte de un nombre de clase vlido
Permite distinguir entre muchas clases con el mismo nombre y
que pertenecen a diferentes paquetes
Previene conflictos de nombre (colisin de nombres)
El nombre de la clase se escribe sin el nombre del paquete

55
Paquetes
56
Importar Clase Reutilizable
Como importar la clase reutilizable en un programa
Usando una declaracin simple de import
Importando una sola clase
Ejemplo: import java.util.Random;
Usando una declaracin del paquete
Importa todas las clases del paquete
Ejemplo: import java.util.*;

Error comn de programacin
Usar la declaracin de import import java.*; que
causara un error de compilacin.
Se debe especificar el exacto nombre del paquete que
contiene la clase que se quiere importar.

57
Acceso del paquete
Acceso del paquete
Mtodos y variables declaradas sin ningun modificador tienen
acceso de paquete
Esto no afecta si el programa consiste de una sola clase
Si tiene efectos si el programa contiene ms de una clase en el
mismo paquete
Los miembros con acceso de paquete pueden ser accedidos
directamente mediante una referencia apropiada al objeto, desde las
otras clases que pertenecen al mismo paquete

Mantener dentro del mismo paquete las clases
dependientes para que soporten la funcionalidad del
paquete.
58
Ejemplo de Uso de Paquetes
Codificar el siguiente diagrama de clases
59
Ejemplo de Uso de Paquetes
En el mtodo main, crear un objeto de tipo cuenta y
asignarle un propietario, realizarle un cargo y un abono
La clase Cuenta define dos atributos de tipo coleccin:
una coleccin de Clientes y otra de Movimientos.
Ya que la clase Movimiento se encuentra en el mismo
paquete, no ser necesario importarla.
La clase Cliente se encuentra en un paquete diferente al de la
clase Cuenta, por lo tanto ser necesario importarla.
La clase PruebaCuenta define el mtodo main, en el
cual se crearn objetos de tipo Cuenta.
Ya que la clase Cuenta se encuentra en otro paquete, ser
necesario importarla a la clase PruebaCuenta.

Potrebbero piacerti anche