66
public class Rectangul o{ int x, y; int ancho, alto; public Rectangulo(){ x = 0; y = 0; ancho = 100; alto = 100; } public void mueve(int x, int y){ this.x = x; this.y = y; } public void cambiaTam ano(int ancho, int alto){ this.ancho = ancho; this.alto = alto; } } Declaración Cuerpo Variables Constructor Métodos Programación II (Java) Encapsulación y Constructores

Objetos2

Embed Size (px)

DESCRIPTION

sig

Citation preview

7/17/2019 Objetos2

http://slidepdf.com/reader/full/objetos2 1/66

public class Rectangulo{

int x, y;int ancho, alto;

public Rectangulo(){x = 0;y = 0;ancho = 100;alto = 100;

}

public void mueve(int x, int y){this.x = x;this.y = y;

}

public void cambiaTamano(int ancho, int alto){this.ancho = ancho;this.alto = alto;

}

}

Declaración

Cuerpo

Variables

Constructor 

Métodos

Programación II (Java) Encapsulación y

Constructores

7/17/2019 Objetos2

http://slidepdf.com/reader/full/objetos2 2/66

Programación II (Java) Encapsulación y

Constructores

Creación de Constructores

Los constructores son estructuras similares a los métodos alas que se llama automáticamente cuando se instancia un

objeto.

La sintaxis de los constructores:

[modificadores] class NombreClase{

[modificador] NombreConstructor ([argumentos]){bloque_código;

 }

 }

7/17/2019 Objetos2

http://slidepdf.com/reader/full/objetos2 3/66

Programación II (Java) Encapsulación y

Constructores

Creación de Constructores La sintaxis de los constructores:

[modificadores] class NombreClase{

[modificadore] NombreConstructor ([argumentos]){bloque_código;

 }

 }

Donde:

[modificadores] palabra reservada de Java que determina la formade acceso al constructor.

NombreConstructor, es el nombre del método constructor.  Elnombre de constructor debe de ser igual al nombre de la clase. 

[argumentos] representan uno o varios valores opcionales.

bloque_codigo representa una o varias líneas de código. 

7/17/2019 Objetos2

http://slidepdf.com/reader/full/objetos2 4/66

Especificadores de acceso para constructores

private Ninguna otra clase puede crear una instancia de esta clase.

protected Sólo subclases de esta clase pueden crear instancias 

public Todas las clases pueden crear instancias de esta clase

default Sólo clases del mismo paquete puede crear instancias de esta

clase. Este caso se da cuando no se especifica ninguno de losotros niveles de acceso.

7/17/2019 Objetos2

http://slidepdf.com/reader/full/objetos2 5/66

Ejemplo

package figuras;public class Rectangulo{

public Rectangulo(int alto, int ancho){//Cualquier clase puede declarar rectangulos//Especificando su ancho y alto

}

Rectangulo(int alto, int ancho, int posicionX, intposicionY){

//Solo clases del mismo paquete pueden//Inicializar el rectangulo con

}}

public class Utilerias {Utilerias(){

Rectangulo rect=new Rectangulo(10,10, 0, 5);}

}

Error

7/17/2019 Objetos2

http://slidepdf.com/reader/full/objetos2 6/66

Programación II (Java) Encapsulación y

Constructores

Creación de Constructores

Por ejemplo: public class Camisa {

 private int camidaId=0;

 private String descripcion=“ -descripcion” ;

 private char color=„U‟ ;

 public Camisa  (char iniColor){

switch(iniColor){

case „R‟ :

case „V‟ :

case „A‟ :

color= newColor;break;

default:

System.out. println(“Código de color no válido”);

 }

 }

7/17/2019 Objetos2

http://slidepdf.com/reader/full/objetos2 7/66

Programación II (Java) Encapsulación y

Constructores

Creación de Constructores

Por ejemplo:

 public class ConstructorCamisa{

 public statict void main(String args[]){

Camisa camisa = new Camisa( ́R‟);

char color;

color = camisa.getColor();

System.out. println(“Codigo de color: ”+color);

 }

 }

7/17/2019 Objetos2

http://slidepdf.com/reader/full/objetos2 8/66

Programación II (Java) Encapsulación y

Constructores

Creación de Constructores

Como en el caso de los métodos, es posiblesobrecargar los constructores incluyendo varios

constructores en una clase, cada uno de ellos conel mismo nombre y diferentes series deargumentos. 

7/17/2019 Objetos2

http://slidepdf.com/reader/full/objetos2 9/66

Programación II (Java) Encapsulación y

Constructores

Constructor Default

Si el compilador Java encuentra una clase que no tiene ningúnconstructor definido de forma explicita, incluye un constructorpredeterminado.

Cuando se utiliza el constructor new para instanciar un objetocuya clase no contiene ningún constructor explicito, la palabraclave new llama automáticamente al constructor predeterminadode la clase.

Por ejemplo:

Camisa camisa = new Camisa();

7/17/2019 Objetos2

http://slidepdf.com/reader/full/objetos2 10/66

Programación II (Java) Encapsulación y

Constructores

Constructor Default Si declara su propio constructor, evitara que el compilador introduzca el

constructor predeterminado en el código.

Puede crear su propio constructor sin argumentos agregando a la claseun constructor que no acepte argumentos. Por ejemplo: 

 public class Camisa {

 private int camidaId=0;

 private String descripcion=“ -descripcion” ;

 private char color=„U‟ ;

 public Camisa  (){

color = „R‟ ;

 }

 }

7/17/2019 Objetos2

http://slidepdf.com/reader/full/objetos2 11/66

Programación II (Java) Encapsulación y

Constructores

Sobrecarga de constructores

 Al igual que los métodos, los constructores también se puedensobrecargar, por ejemplo:

 public class Camisa {

 private int camidaId=0;

 private String descripcion=“ -descripcion” ;

 private char color=„U‟ ;

 public Camisa  (){

color = „R‟ ;

 }

 public Camisa  (char iniColor){switch(iniColor){

case „R‟ :

case „V‟ :case „A‟ :

color= newColor;

break;default:

System.out.println(“Código de color no válido”);

 }

 } }

7/17/2019 Objetos2

http://slidepdf.com/reader/full/objetos2 12/66

Programación II (Java) Encapsulación y

Constructores

Sobrecarga de constructores

// Fig. 8.5: Time2.java 

// Time2 class declaration with overloaded constructors.

4 public class Time2

5 {

6 private int hour; // 0 - 23 

7 private int minute; // 0 - 59 

8 private int second; // 0 - 59 

9

10 // Time2 no-argument constructor: initializes each instance variable 

11 // to zero; ensures that Time2 objects start in a consistent state

12 public Time2()

13 {

14 this( 0, 0, 0 ); // invoke Time2 constructor with three arguments 

15 } // end Time2 no-argument constructor

16

17 // Time2 constructor: hour supplied, minute and second defaulted to 0 

18 public Time2( int h )

19{

20 this( h, 0, 0 ); // invoke Time2 constructor with three arguments

21 } // end Time2 one-argument constructor

22

23 // Time2 constructor: hour and minute supplied, second defaulted to 0

 

24 public Time2( int h, int m )

25 {

26 this( h, m, 0 ); // invoke Time2 constructor with three arguments

27 } // end Time2 two-argument constructor

28

7/17/2019 Objetos2

http://slidepdf.com/reader/full/objetos2 13/66

Programación II (Java) Encapsulación y

Constructores

Sobrecarga de métodos29 // Time2 constructor: hour, minute and second supplied

30public Time2( int h, int m, int s )

31 {

32 setTime( h, m, s ); // invoke setTime to validate time 

33 } // end Time2 three-argument constructor

34

35// Time2 constructor: another Time2 object supplied

36 public Time2( Time2 time )

37 {

38 // invoke Time2 three-argument constructor

39 this( time.getHour(), time.getMinute(), time.getSecond() );

40 } // end Time2 constructor with a Time2 object argument

41

42// Set Methods 

43 // set a new time value using universal time; ensure that

44 // the data remains consistent by setting invalid values to zero 

45 public void setTime( int h, int m, int s )

46{

47setHour( h ); // set the hour

48setMinute( m ); // set the minute 

49 setSecond( s ); // set the second 

50 } // end method setTime

 

51

7/17/2019 Objetos2

http://slidepdf.com/reader/full/objetos2 14/66

Programación II (Java) Encapsulación y

Constructores

Sobrecarga de métodos52 // validate and set hour

53public void setHour( int h )

54 {

55 hour = ( ( h >= 0 && h < 24 ) ? h : 0 );

56} // end method setHour

57

58 // validate and set minute

59 public void setMinute( int m )

60 {

61minute = ( ( m >= 0 && m < 60 ) ? m : 0 );

62 } // end method setMinute

63

64 // validate and set second

65 public void setSecond( int s )

66{

67 second = ( ( s >= 0 && s < 60 ) ? s : 0 );

68 } // end method setSecond

69

70 // Get Methods

71// get hour value

72 public int getHour()

73 {

74 return hour;

75 } // end method getHour 

7/17/2019 Objetos2

http://slidepdf.com/reader/full/objetos2 15/66

Programación II (Java) Encapsulación y

Constructores

Sobrecarga de métodos77 // get minute value

78 public int getMinute()

79 {

80 return minute;

81 } // end method getMinute

 

82

83 // get second value

84 public int getSecond()

85 {

86 return second;

87 } // end method getSecond 

88

89 // convert to String in universal-time format (HH:MM:SS) 

90 public String toUniversalString()

91 {

92 return String.format(

93 %02d:%02d:%02d , getHour(), getMinute(), getSecond() );

94 } // end method toUniversalString 

95

96 // convert to String in standard-time format (H:MM:SS AM or PM) 

97 public String toString()

98 {

99 return  String.format( %d:%02d:%02d %s ,

100 ( (getHour() == 0 || getHour() == 12) ? 12 : getHour() % 12 ),

101 getMinute(), getSecond(), ( getHour() < 12 ? AM : PM ) );

102 } // end method toString 

103} // end class Time2

 

7/17/2019 Objetos2

http://slidepdf.com/reader/full/objetos2 16/66

Programación II (Java) Encapsulación y

Constructores

Uso de la Sobrecarga de métodos

1// Fig. 8.6: Time2Test.java 

2// Overloaded constructors used to initialize Time2 objects. 

3

4public class Time2Test

5{

6public static void main( String args[] )

7{

8 Time2 t1 = new Time2(); // 00:00:00

 

9 Time2 t2 = new Time2( 2 ); // 02:00:00 

10Time2 t3 = new Time2( 21, 34 ); // 21:34:00 

11 Time2 t4 = new Time2( 12, 25, 42 ); // 12:25:42 

12 Time2 t5 = new Time2( 27, 74, 99 ); // 00:00:00 

13 Time2 t6 = new Time2( t4 ); // 12:25:42 

14

15 System.out.println( Constructed with: );

16 System.out.println( t1: all arguments defaulted );

17 System.out.printf( %s\n , t1.toUniversalString() );

18 System.out.printf( %s\n , t1.toString() );

19

7/17/2019 Objetos2

http://slidepdf.com/reader/full/objetos2 17/66

Programación II (Java) Encapsulación y

Constructores

Uso de la Sobrecarga de métodos

20 System.out.println(

21 t2: hour specified; minute and second defaulted );

22 System.out.printf( %s\n , t2.toUniversalString() );

23 System.out.printf( %s\n , t2.toString() );

24

25 System.out.println(

26 t3: hour and minute specified; second defaulted );

27 System.out.printf( %s\n , t3.toUniversalString() );

28 System.out.printf( %s\n , t3.toString() );

29

30 System.out.println( t4: hour, minute and second specified );

31 System.out.printf( %s\n , t4.toUniversalString() );

32 System.out.printf( %s\n , t4.toString() );

33

34System.out.println( t5: all invalid values specified );

35 System.out.printf( %s\n , t5.toUniversalString() );

36 System.out.printf( %s\n , t5.toString() );

37

7/17/2019 Objetos2

http://slidepdf.com/reader/full/objetos2 18/66

Programación II (Java) Encapsulación y

Constructores

Uso de la Sobrecarga de métodos

38System.out.println( t6: Time2 object t4 specified );

39 System.out.printf( %s\n , t6.toUniversalString() );

40 System.out.printf( %s\n , t6.toString() );

41 } // end main 

42 } // end class Time2Test 

t1: all arguments defaulted

00:00:00

12:00:00 AM

t2: hour specified; minute and second defaulted

02:00:00

2:00:00 AM

t3: hour and minute specified; second defaulted

21:34:00

9:34:00 PM

t4: hour, minute and second specified

12:25:42

12:25:42 PM

t5: all invalid values specified

00:00:00

12:00:00 AM

t6: Time2 object t4 specified

12:25:42

12:25:42 PM

7/17/2019 Objetos2

http://slidepdf.com/reader/full/objetos2 19/66

Programación II (Java) Encapsulación y

Constructores

Ejercicio: creación de los constructores para inicializar objetos.

1.- Cree una clase Rectangulo2.- Cree dos variables privadas de tipo int con los nombres ancho y alto.

3.- Agregue los constructores siguientes:

a.- Un constructor sin argumentos que imprima en pantalla el mensaje“Rectangulo creado por default ancho=25, alto=10 ” y defina ancho como 25 y

alto como 10.

b.- Un constructor que acepte argumentos w y h, y asigne a ancho el valor de wy alto el valor h solo si estos son mayores que 0 y menores que 30. En caso deque estén fuera muestre mensaje de error. De lo contrario que muestre enpantalla las dimensiones con las que se creo el objeto.

2.- Cree un método llamado getArea que calcule y devuelva el área del rectángulo.

3.- Cree un método llamado dibujar:

a.- Cree un bucle for anidado para dibujar un rectángulo utilizando asteriscos(*),en base a los valores de altura y anchura

4.- Cree una clase RectanguloTest, que contenga el método main.

5.- Instaciee la clase Rectangulo para dos variables r1 y r2,de forma que:

a.- r1 se crea mediante el constructor sin argumento.

b.- r1 se dibuje después de crear

c.- r2 se cree utilizando el constructor con argumentos.

d.- dibuje r2 y muestre su área.

7/17/2019 Objetos2

http://slidepdf.com/reader/full/objetos2 20/66

Encapsulación y constructores

JAVA

7/17/2019 Objetos2

http://slidepdf.com/reader/full/objetos2 21/66

Programación II (Java) Encapsulación y

Constructores

Uso de la encapsulación

En la POO, la encapsulación se refiere a la acción de

ocultar los datos dentro de una clase y hacer que

estén disponibles sólo a través de ciertos métodos. 

7/17/2019 Objetos2

http://slidepdf.com/reader/full/objetos2 22/66

Programación II (Java) Encapsulación y

Constructores

Modificador public

Este modificador hace que la clase, sus atributos y

métodos estén visibles para cualquier objeto de suprograma.

Para hacer que un atributo o método sea de accesopublico, ponga el modificador public delante delmétodo de la variable correspondiente o delante delmétodo.

7/17/2019 Objetos2

http://slidepdf.com/reader/full/objetos2 23/66

Programación II (Java) Encapsulación y

Constructores

Problema potenciales derivados de los atributosPublic

Si todos los atributos se declaran public, permite cambiar sus valores sincomprobar posibles errores, por ejemplo:

 public class Elevador{

 public boolean abrirPuerta=false;

 public int pisoActual = 1;

 public int peso = 0;

 public final int CAPACIDAD = 1000;

 public final int ULTIMO_PISO = 5;

 public final int PRIMER_PISO = 1;

 }

7/17/2019 Objetos2

http://slidepdf.com/reader/full/objetos2 24/66

Programación II (Java) Encapsulación y

Constructores

Problema potenciales derivados de los atributos Public

Programa que accede a los atributos de un objeto Elevador, provocando errores:

 public class ElevadorMain{

 public static void main(String args[]){Elevador elevador = new Elevador();

elevador.abrirPuerta=true; //los usuarios entran al ascensor

elevador.abrirPuerta=false; //las puertas se cierran

 // descender a la planta 0 (debajo de la planta baja del edificio)

elevador.pisoActual --;

elevador.pisoActual++;

 //pasa a la planta 7(solo hay 5 plantas en el edificio)

elevador.pisoActual = 7;elevador.abrirPuerta=true; //los usuarios entran/salen del

ascensor

elevador.abrirPuerta=false; //las puertas se cierran

elevador.pisoActual = 1; //ir a la primer planta

 }

 }

7/17/2019 Objetos2

http://slidepdf.com/reader/full/objetos2 25/66

Programación II (Java) Encapsulación y

Constructores

Modificador private

Este modificador impide que otros objetos puedan

acceder a los objetos de una determinada clase, sus

atributos y sus métodos.

Para hacer que un atributo o método sea de acceso

privado, ponga el modificador private delante del

método o de la variable correspondiente al atributo.

7/17/2019 Objetos2

http://slidepdf.com/reader/full/objetos2 26/66

Programación II (Java) Encapsulación y

Constructores

Método private

Por ejemplo:

 public class Elevador{

 private boolean abrirPuerta=false;

 private int pisoActual = 1;

 private int peso = 0;

 private final int CAPACIDAD = 1000; private final int ULTIMO_PISO = 5;

 private final int PRIMER_PISO = 1;

 }

7/17/2019 Objetos2

http://slidepdf.com/reader/full/objetos2 27/66

Programación II (Java) Encapsulación y

Constructores

Modificador private

El siguiente código no se compila, porque intenta acceder a variables de accesoprivado:

 public class ElevadorMain{

 public static void main(String args[]){

Elevador elevador = new Elevador();

elevador.abrirPuerta=true; //los usuarios entran al ascensor

elevador.abrirPuerta=false; //las puertas se cierran

 // descender a la planta 0 (debajo de la planta baja del edificio)

elevador.pisoActual --;

elevador.pisoActual++;

 //pasa a la planta 7(solo hay 5 plantas en el edificio)elevador.pisoActual = 7;

elevador.abrirPuerta=true; //los usuarios entran/salen delascensor

elevador.abrirPuerta=false; //las puertas se cierran

elevador.pisoActual = 1; //ir a la primer planta

 }

 }

7/17/2019 Objetos2

http://slidepdf.com/reader/full/objetos2 28/66

Programación II (Java) Encapsulación y

Constructores

Métodos get y set

Si se asigna el modificador private a los atributos, Comoaccedemos a ellos?

Un objeto puede acceder a ellos si proporcionan un metodopublic para cada operación.

Es habitual proporcionar métodos public para establecer(set)y obtener(get) el valor contenido en cada atributo private deuna clase.

7/17/2019 Objetos2

http://slidepdf.com/reader/full/objetos2 29/66

Programación II (Java) Encapsulación y

Constructores

Métodos get y set

Por ejemplo:

 public class PrivateCamisa{

 private int camisaId=0;

 private String descripción = “ -descripcion-” ;

 private char color = „U‟ ;

 public char getColor(){

return color;

 }

 public void setColor(char newColor){

color = newColor;

 }

 } 

7/17/2019 Objetos2

http://slidepdf.com/reader/full/objetos2 30/66

Programación II (Java) Encapsulación y

Constructores

Métodos get y set

Uso de métodos get y set:

 public class PrivateCamisa{

 public static void main (String args[]){

Camisa camisa = new Camisa();

char color;

 // Establece un código de color

camisa.setColor(„R‟);

color = camisa.getColor();

System.out. println(“Codigo de color = ”+color);

 // Establece un código de color no validocamisa.setColor(„Z‟);

color = camisa.getColor();

System.out. println(“Codigo de color = ”+color);

 }

 }

7/17/2019 Objetos2

http://slidepdf.com/reader/full/objetos2 31/66

Programación II (Java) Encapsulación y

Constructores

Métodos get y set

Los métodos que utilice deberían contener lógica de negocioadicional para validar que se va a realizar. Por ejemplo:

 public void setColor(char newColor){

switch(newColor){

case „R‟ :

case „V‟ :

case „A‟ :

color= newColor;

break;

default:

System.out. println(“Código de color no válido”);

 }

 }

7/17/2019 Objetos2

http://slidepdf.com/reader/full/objetos2 32/66

Programación II (Java) Encapsulación y

Constructores

Ejercicio: Acceso a los atributos encapsulados de una clase.

1.- Cree una clase llamada ManejoDeFechas, con tres variables detipo int llamadas, dia, mes y anio.

2.- Agregue los métodos siguientes

a. Método get y set para las tres variables.

b. Método setFecha, que acepte tres argumentos de tipo int y asigna suvalor respectivamente a las variables dia, mes y anio. Antes de

asignar los parámetros a las variables, valídelos para que el díano supere los valores 30,31, 28 o 19 (en función del mes), el messea un valor de 1 y 12, y el año se sitúe entre los valores 1000 y9999. Deberá de aparecer mensajes de error en caso de que falle lavalidación.

c. Método desplegarFecha, muestre en pantalla la fecha con el formatosiguiente : La fecha es: dd/mm/yyyy .

3.- Cree una clase FechasTest dentro del main agregue lo siguientea. Cree e inicialice un objeto de tipo ManejoDeFechas.

b.  Llame al método setFecha y pásele valores.

c. Muestre en pantalla la fecha. Por ejemplo:

La fecha es: dd/mm/yyyy

7/17/2019 Objetos2

http://slidepdf.com/reader/full/objetos2 33/66

Herencia

JAVA

7/17/2019 Objetos2

http://slidepdf.com/reader/full/objetos2 34/66

Programación II (Java) Herencia

Uso de la herencia

En una empresa, se ha decidido que se amplíe la línea de

productos para incluir gorros, calcetines y pantalones, al grupo

de camisas que ya vendía.

 A fin de poder desarrollar las clases necesarias para hacer la

actualización, deberá realizar un breve análisis. Además de

recibir la siguiente información:

Solo venderán gorros y calcetines de talla única.

Los modelos de pantalones serán distintos para hombre y mujeres.

Los pantalones se venderán en color azul y tostado, mientras que

los gorros, los calcetines y las camisas se venderán en rojo, azul y

verde 

7/17/2019 Objetos2

http://slidepdf.com/reader/full/objetos2 35/66

Programación II (Java) Herencia

Uso de la herencia

Gorros

id

preciodescripcion

color=R,A,V

cantidadEnExistencia

calculaId()

despliegaInfo()

Calcetines

id

preciodescripcion

color=R,A,V

cantidadEnExistencia

calculaId()

despliegaInfo()

Pantalones

id

preciotamaño

sexo=F , M

descripcion

color=A,T

cantidadEnExistencia

calculaId()

despliegaInfo()

Camisas

id

PrecioTamaño=S,M,L

descripcion

color=R,A,V

cantidadEnExistencia

calculaId()

despliegaInfo()

7/17/2019 Objetos2

http://slidepdf.com/reader/full/objetos2 36/66

Programación II (Java) Herencia

Uso de la herencia

 La herencia permite a los programadores poner miembros

comunes (variables y métodos) en una clase y hacer que

otras clases HEREDEN esos miembros comunes.

 La forma de comprobar si un vinculo de herencia

propuesto es válido es utilizar la expresión “es un/una”.

Por ejemplo:Un automóvil es un vehiculo.

7/17/2019 Objetos2

http://slidepdf.com/reader/full/objetos2 37/66

Programación II (Java) Herencia

Superclase y subclase

 Las clases que contiene miembros en común a otra clase

se denomina superclase o clase de nivel superior.

Las clases que heredan miembros de las superclases se

denominan subclases o clases subordinadas.

La herencia da como resultado una jerarquía de clases dela tecnología Java.

7/17/2019 Objetos2

http://slidepdf.com/reader/full/objetos2 38/66

Programación II (Java) Herencia

Superclase y subclase

 Por ejemplo:

SuperclaseFigura Circulo, Triangulo, Rectángulo.

Empleado Docente, Administrativo, Secretaria

CuentaBancaria CuentaDeCheque, CuentaDeAhorro

7/17/2019 Objetos2

http://slidepdf.com/reader/full/objetos2 39/66

Programación II (Java) Herencia

Jerarquía de herencia para objetos MiembroComunidad

universitaria.

 Por ejemplo:

MiembroComunidad

Empleado Estudiante

Docente Administrativo

Exalumno

7/17/2019 Objetos2

http://slidepdf.com/reader/full/objetos2 40/66

Programación II (Java) Herencia

Uso de la herencia

 Por ejemplo:

Gorros

color=R,A,V

Calcetines

color=R,A,V

Pantalones

tamaño

genero=F , M

color=A,T

Camisas

tamaño

color=R,A,V

Prendas

Id

precio

descripcion

cantidadEnExistencia

7/17/2019 Objetos2

http://slidepdf.com/reader/full/objetos2 41/66

Declaración de Clases

Modificadores –  De acceso (default, public)

 –  De comportamiento (abstract, final)

• extends

 –  identifica superclase• implements

 –  identifica interfaz que se debe de implementar

modificador  class UnaClase extends Superclase implements Interfaz{}

7/17/2019 Objetos2

http://slidepdf.com/reader/full/objetos2 42/66

Declaración - Acceso a Clases

Clase A tiene acceso a Clase B, se refiere

a:Clase A puede crear instancias (Objetos) de la clase

BClase A puede extender a la clase B (Herencia)

 Accesar sus metodos, dependiendo de los

modificadores de acceso de los mismos.

7/17/2019 Objetos2

http://slidepdf.com/reader/full/objetos2 43/66

Declaración – Acceso Default

Cuando a una clase no se le especifica su nivel de

acceso se dice que su acceso es nivel default o

nivel de paquete

Solamente clases del mismo paquete pueden

accesar a esta clase

• Ejemplo:

package edu.uanl.estudiantes;

class Estudiante {

}

package edu.uanl.maestros;

import edu.uanl.estudiantes.Estudiante;

class Maestro{//NO podra crear instancias de estudiante

}

7/17/2019 Objetos2

http://slidepdf.com/reader/full/objetos2 44/66

Declaración – Acceso Publico

Se antepone la palabra public a la clase

Todas las clases podrán crear instancias de la clase

package edu.uanl.estudiantes;

public class Estudiante {

}

package edu.uanl.maestros;

import edu.uanl.estudiantes.Estudiante;

class Maestro{//PODRÁ crear instancias de estudiante}

7/17/2019 Objetos2

http://slidepdf.com/reader/full/objetos2 45/66

Declaración - Comportamiento

finalUna clase con un modificador final no puede tener

subclases

abstract

Una clase abstracta no puede instanciarse. Su

proposito es solo para generar subclases.

Sirve para especificar el comportamiento de sus

subclases

7/17/2019 Objetos2

http://slidepdf.com/reader/full/objetos2 46/66

Programación II (Java) Herencia

Creación de una superclase

 public class Prenda{

 private int id=0;

 private String descripcion=“ -descripcion-” ; private double precio = 0.0 ;

 private int cantidad=0;

 private static int contador=0;

 public Prenda(){

id = contador++; }

… 

 /*en esta sección van los getter y setter de cada atributo*/

… 

 }

7/17/2019 Objetos2

http://slidepdf.com/reader/full/objetos2 47/66

Programación II (Java) Herencia

Creación de una subclase

 public class Camisa extends  Prenda {

 public color ́=„U‟ ;

 public void despliegaInfo(){

System.out. println(“Id  de Camisa = ”+getId());

System.out. println(“Descripcion = ”+getDescripcion());

System.out. println(“Codigo Color = ”+getColor());

 }… 

 /*en esta sección van los getter y setter de cada atributo*/

… 

 }

7/17/2019 Objetos2

http://slidepdf.com/reader/full/objetos2 48/66

La sobreescritura de métodos es una característica más

de la herencia en Java.

Se dice que un método está sobreescrito, cuando las

instrucciones que se ejecutan dentro de este tienen

diferente implementación a la del método queheredaron.

Para poder sobeescribir un método es utilizar el mismo

nombre del método en la subclase, el mismo tipo de

retorno y la misma lista de argumentos de llamada, y enel cuerpo de ese método en la subclase proporcionar un

código diferente

Programación II (Java) Sobreescritura

7/17/2019 Objetos2

http://slidepdf.com/reader/full/objetos2 49/66

  Las reglas básicas para la sobreescritura de métodos son las

siguientes:

La lista de argumentos del método debe ser exactamente la misma.

El tipo de retorno debe de ser el mismo o un subtipo del tipo de retorno

declarado originalmente.

El modificador de acceso no debe de ser más restrictivo.

El modificador de acceso puede ser menos restrictivo.

Los métodos de instancia pueden ser sobreescritos solamente si han sido

heredados por la subclase.

No se puede sobreescibir un método marcado como final.

Si un método no puede ser heredado, no puede ser sobreescrito.

Programación II (Java) Sobreescritura

7/17/2019 Objetos2

http://slidepdf.com/reader/full/objetos2 50/66

public class Animal{public void comer(){

System.out.println(“Animal Generico comiendo de forma General”); }

}class Caballo extends Animal {

public void comer(){

System.out.println(“Caballo comiendo avena y alfalfa”); }

}

Programación II (Java) Sobreescritura

7/17/2019 Objetos2

http://slidepdf.com/reader/full/objetos2 51/66

Clases Abstractas

Hay clases que no deberían ser instanciadas.

 Animal

comida

hambre

ubicacionlimites

hacerRuido()

comer()

dormir()

vagar()

Felino

vagar()

Canino

vagar()

Perro

hacerRuido()

comer()

Lobo

hacerRuido()

comer()

Gato

hacerRuido()

comer()

León

hacerRuido()

comer()

7/17/2019 Objetos2

http://slidepdf.com/reader/full/objetos2 52/66

Clases Abstractas

Te has preguntado que forma tendría una clase Animal?? Como te puedes dar cuenta “necesitamos” la

clase Animal solo para heredar a otras clases y hacer

polimorfismo de sus métodos. A este tipo de clases las

conocemos como Abstractas, ya que de esta solosabemos los métodos que realiza y las variables de

instancia que la conforman.

7/17/2019 Objetos2

http://slidepdf.com/reader/full/objetos2 53/66

Clases Abstractas

Una clase Abstracta no tiene cuerpo, solo tienedeclarados los métodos que implementa y sus variables

de instancia.

7/17/2019 Objetos2

http://slidepdf.com/reader/full/objetos2 54/66

Clases Abstractas

 Al marcar la clase como abstract, el compilador detendrá

a cualquier código de crear una instancia de ese tipo de

clase.

El único propósito de una clase abstracta es que otras

clases extiendan de ella

abstract class Canine extends Animal {

public void roam() { }

}

7/17/2019 Objetos2

http://slidepdf.com/reader/full/objetos2 55/66

Métodos Abstractos

Cuando definimos una clase como abstracta, le estamos

diciendo al compilador que la clase DEBE ser

extendida, cuando definimos un método como abstracto

le estamos diciendo al compilador que el método DEBE

ser sobreescrito.

public abstract void comer() ;

7/17/2019 Objetos2

http://slidepdf.com/reader/full/objetos2 56/66

Métodos Abstractos

Un método abstracto no tiene cuerpo. No abre ni cierrabraquets { }, termina con ;

Si un método se declara abstracto, la clase que lo

contiene DEBE ser marcada como abstracta. NO SEPUEDE TENER un método abstracto en una clase noabstracta.

 Al extender una clase abstracta, TODOS los métodosdeclarados como abstractos, deben ser implementados(sobreescritos)

public abstract void comer() ;

7/17/2019 Objetos2

http://slidepdf.com/reader/full/objetos2 57/66

Programación II (Java) Herencia

Ejercicio

Representar la jerarquía de clases de publicaciones que

se distribuyen en una librería: revistas y libros, etc.

Todas las publicaciones tienen en común una editorial y una fecha

de publicación. Las revistas tienen una determinada periodicidad, lo

que implica el numero de ejemplares que se publican al año y, por

ejemplo, el numero de ejemplares que se ponen en circulación. Los

libros por el contrario, tienen un código ISBN y el nombre del autor.

7/17/2019 Objetos2

http://slidepdf.com/reader/full/objetos2 58/66

Programación II (Java) Herencia

Ejercicio

Publicación

Revista Libro

7/17/2019 Objetos2

http://slidepdf.com/reader/full/objetos2 59/66

Programación II (Java) Herencia

Ejercicio: Diseño de superclase y subclases

Publicaciones Elizondo, tiene empleados que ocupan diferentes cargos. Los

cargos son: técnicos, ilustradores gráficos, gerentes y editores.

Publicaciones Elizondo, le pide que cree un programa para llevar el control de la

información relativa a cada uno de sus trabajadores. Esta información secompone de los datos siguientes: el nombre del trabajador, su cargo , el ID de

empleado (en un intervalo de 1 a 1,000) y el nivel (1,2,3). Además:

Los gerentes deben tener una lista de los empleados a su cargo.

Los técnicos, ilustradores y editores deben tener una lista de habilidades que poseen.

Los editores deben tener un valor que indique si prefieren realizar la edición en formato

electrónico o en papel.

Todas las subclases deben de incluir un método para mostrar la información

según el tipo de empleado.

Demuestre la encapsulación de cada una de las clases de su diseño incluyendo

en él los métodos get y set.

7/17/2019 Objetos2

http://slidepdf.com/reader/full/objetos2 60/66

Programación II (Java) Herencia

Diseño de Clases

Editor

String[] habilidades

boolean formatoEdicion

desplegarInfo()

getHabilidades()

setHabilidades(String[]h)

Gerente

Empleado[] listaEmp

desplegarInfo()

Empleado

String nombre

String cargo

int id

int nivel

calcularId()

Tecnico

String[] habilidades

desplegarInfo()

Ilustrador

String[] habilidades

desplegarInfo()

7/17/2019 Objetos2

http://slidepdf.com/reader/full/objetos2 61/66

Programación II (Java) Herencia

Ejercicio: creación y uso de superclase y subclases

1.- Cree las clases del diseño

2.- Cree métodos para mostrar cada una de la información del trabajador

(subclases)

3.- Cree métodos get y set a cada uno de los atributos de las clases

4.- Declare la variable id como static a fin de que cada identificador generado

sea exclusivo.

5.- Cree la siguiente clase principal(Main):

Cree un objeto para cada una de las subclases

7/17/2019 Objetos2

http://slidepdf.com/reader/full/objetos2 62/66

Programación II (Java) Encapsulación y

Constructores

Composición

Una clase puede tener referencias a objetos de otraclase como miembros. A dicha capacidad se leconoce como composición.

Por ejemplo, un objeto de la clase RelojAlarmanecesita saber la hora actual y la hora en la quesonara la alarma, por lo que es razonable incluir dosreferencias a objetos Tiempo como miembros delobjeto RelojAlarma.

La composición es una forma de reutilización desoftware, en donde una clase tiene como miembrosreferencias o objetos de otras clases.

7/17/2019 Objetos2

http://slidepdf.com/reader/full/objetos2 63/66

Programación II (Java) Encapsulación y

Constructores

Composición

Composición “tiene un” 

Herencia “es un” 

Polimorfismo.

Encapsulación.

( )

7/17/2019 Objetos2

http://slidepdf.com/reader/full/objetos2 64/66

Programación II (Java) Encapsulación y

Constructores

public class Punto {

int x;

int y;

public Punto(int x, int y) {

this.x = x;

this.y = y;

}

public Punto() {

// llamada al otro constructor

this(-1, -1);

}public void mostrar() {

System.out.println("x = "+ x +"y = "+ y);

}

}

P ió II (J ) E l ió

7/17/2019 Objetos2

http://slidepdf.com/reader/full/objetos2 65/66

Programación II (Java) Encapsulación y

Constructores

public class Circulo {

Punto origen;

int radio;

public Circulo(int x, int y, int radio) {

origen = new Punto(x, y);this.radio = radio;

}

public void mostrar() {

origen.mostrar();System.out.println("radio = " + radio);

}

}

P ió II (J ) C i ió

7/17/2019 Objetos2

http://slidepdf.com/reader/full/objetos2 66/66

Ejercicio: Dada la siguiente imagen de clase Alumno. Cree la clase alumno en java

Defina los atributos de la clase implementando “Encapsulación” y “Composición”. 

Defina si así se requiere las OTRAS clases de las que se compone Alumno(¿Alumno tiene un …?)  

Defina los métodos registrar, obtener, modificar, eliminar y listadoDeAlumnos en la clase de Alumno, la implementaciónde éstos métodos es sólo con el return.

Programación II (Java) Composición