Вы находитесь на странице: 1из 66

Programacin II (Java)

Encapsulacin y
Constructores

public class Rectangulo{


int x, y;
int ancho, alto;

Declaracin

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

Variables

public void mueve(int x, int y){


this.x = x;
this.y = y;
}

Constructor

public void cambiaTamano(int ancho, int alto){


this.ancho = ancho;
this.alto = alto;
}

Mtodos
}

Cuerpo

Programacin II (Java)

Encapsulacin y
Constructores

Creacin de Constructores
Los constructores son estructuras similares a los mtodos a
las que se llama automticamente cuando se instancia un
objeto.
La sintaxis de los constructores:
[modificadores] class NombreClase{
[modificador] NombreConstructor ([argumentos]){
bloque_cdigo;
}
}

Programacin II (Java)

Encapsulacin y
Constructores

Creacin de Constructores
La sintaxis de los constructores:
[modificadores] class NombreClase{
[modificadore] NombreConstructor ([argumentos]){
bloque_cdigo;
}
}

Donde:
[modificadores] palabra reservada de Java que determina la forma
de acceso al constructor.
NombreConstructor, es el nombre del mtodo constructor. El
nombre de constructor debe de ser igual al nombre de la clase.
[argumentos] representan uno o varios valores opcionales.
bloque_codigo representa una o varias lneas de cdigo.

Especificadores de acceso para constructores

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

protected
Slo subclases de esta clase pueden crear instancias

public
Todas las clases pueden crear instancias de esta clase

default
Slo clases del mismo paquete puede crear instancias de esta
clase. Este caso se da cuando no se especifica ninguno de los
otros niveles de acceso.

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, int
posicionY){
//Solo clases del mismo paquete pueden
//Inicializar el rectangulo con
}
}
public class Utilerias {
Utilerias(){
Rectangulo rect=new Rectangulo(10,10, 0, 5);
}
}

Error

Programacin II (Java)

Encapsulacin y
Constructores

Creacin 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(Cdigo de color no vlido);
}
}

Programacin II (Java)

Encapsulacin y
Constructores

Creacin 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);

}
}

Programacin II (Java)

Encapsulacin y
Constructores

Creacin de Constructores
Como en el caso de los mtodos, es posible
sobrecargar los constructores incluyendo varios
constructores en una clase, cada uno de ellos con
el mismo nombre y diferentes series de
argumentos.

Programacin II (Java)

Encapsulacin y
Constructores

Constructor Default
Si el compilador Java encuentra una clase que no tiene ningn
constructor definido de forma explicita, incluye un constructor
predeterminado.

Cuando se utiliza el constructor new para instanciar un objeto


cuya clase no contiene ningn constructor explicito, la palabra
clave new llama automticamente al constructor predeterminado
de la clase.
Por ejemplo:
Camisa camisa = new Camisa();

Programacin II (Java)

Encapsulacin y
Constructores

Constructor Default

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


constructor predeterminado en el cdigo.

Puede crear su propio constructor sin argumentos agregando a la clase


un 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;
}
}

Programacin II (Java)

Encapsulacin y
Constructores

Sobrecarga de constructores

Al igual que los mtodos, los constructores tambin se pueden


sobrecargar, 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(Cdigo de color no vlido);
}
}
}

Programacin II (Java)

1
2

// Fig. 8.5: Time2.java


// Time2 class declaration with overloaded constructors.

4
5

public class Time2


{

Encapsulacin y
Constructores

Sobrecarga
de constructores
3
6
7
8

private int hour;


// 0 - 23
private int minute; // 0 - 59
private int second; // 0 - 59

9
10
11

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


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

12
13

public Time2()
{

14
15
16
17
18
19
20
21
22
23

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


} // end Time2 no-argument constructor

24

public Time2( int h, int m )

25
26
27
28

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


public Time2( int h )
{
this( h, 0, 0 ); // invoke Time2 constructor with three arguments
} // end Time2 one-argument constructor
// Time2 constructor: hour and minute supplied, second defaulted to 0

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


} // end Time2 two-argument constructor

Programacin II (Java)

Encapsulacin y
Constructores

Sobrecarga de mtodos
29

// Time2 constructor: hour, minute and second supplied

30

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

31

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

32
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

47

setHour( h );

48

setMinute( m ); // set the minute

49

setSecond( s ); // set the second

50
51

// set the hour

} // end method setTime

Programacin II (Java)

Sobrecarga de mtodos
52

// validate and set hour

53

public void setHour( int h )

54

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

55
56

} // end method setHour

57
58

// validate and set minute

59

public void setMinute( int m )

60

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

61
62

} // end method setMinute

63
64

// validate and set second

65

public void setSecond( int s )

66

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

67
68

} // end method setSecond

69
70

// Get Methods

71

// get hour value

72

public int getHour()

73

74
75
76

return hour;
} // end method getHour

Encapsulacin y
Constructores

Programacin II (Java)

Sobrecarga de mtodos
77

// get minute value

78

public int getMinute()

79
80

81

} // end method getMinute

82
83

// get second value

84

public int getSecond()

85
86

87

} // end method getSecond

88
89
90

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


public String toUniversalString()

91

92
93

return minute;

return second;

return String.format(
"%02d:%02d:%02d", getHour(), getMinute(), getSecond() );

94
95

} // end method toUniversalString

96

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

97
98

public String toString()


{

99
100
101

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


( (getHour() == 0 || getHour() == 12) ? 12 : getHour() % 12 ),
getMinute(), getSecond(), ( getHour() < 12 ? "AM" : "PM" ) );

102
} // end method toString
103 } // end class Time2

Encapsulacin y
Constructores

Programacin II (Java)

Encapsulacin y
Constructores

Uso de la Sobrecarga de mtodos


1

// Fig. 8.6: Time2Test.java

// Overloaded constructors used to initialize Time2 objects.

3
4

public class Time2Test

public static void main( String args[] )

Time2 t1 = new Time2();

// 00:00:00

Time2 t2 = new Time2( 2 );

// 02:00:00

10

Time2 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

Programacin II (Java)

Encapsulacin y
Constructores

Uso de la Sobrecarga de mtodos


20
21

System.out.println(
"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
26

System.out.println(
"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
34

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

35

System.out.printf( "

%s\n", t5.toUniversalString() );

36

System.out.printf( "

%s\n", t5.toString() );

37

Programacin II (Java)

Encapsulacin y
Constructores

Uso de la Sobrecarga de mtodos


38

System.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

Programacin II (Java)

Encapsulacin y
Constructores

Ejercicio: creacin de los constructores para inicializar objetos.


1.- Cree una clase Rectangulo
2.- 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 w
y alto el valor h solo si estos son mayores que 0 y menores que 30. En caso de
que estn fuera muestre mensaje de error. De lo contrario que muestre en
pantalla las dimensiones con las que se creo el objeto.
2.- Cree un mtodo llamado getArea que calcule y devuelva el rea del rectngulo.
3.- Cree un mtodo llamado dibujar:
a.- Cree un bucle for anidado para dibujar un rectngulo utilizando asteriscos(*),
en base a los valores de altura y anchura
4.- Cree una clase RectanguloTest, que contenga el mtodo 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 despus de crear
c.- r2 se cree utilizando el constructor con argumentos.
d.- dibuje r2 y muestre su rea.

Encapsulacin y constructores
JAVA

Programacin II (Java)

Encapsulacin y
Constructores

Uso de la encapsulacin
En la POO, la encapsulacin se refiere a la accin de
ocultar los datos dentro de una clase y hacer que
estn disponibles slo a travs de ciertos mtodos.

Programacin II (Java)

Encapsulacin y
Constructores

Modificador public
Este modificador hace que la clase, sus atributos y
mtodos estn visibles para cualquier objeto de su
programa.
Para hacer que un atributo o mtodo sea de acceso
publico, ponga el modificador public delante del
mtodo de la variable correspondiente o delante del
mtodo.

Programacin II (Java)

Encapsulacin y
Constructores

Problema potenciales derivados de los atributos


Public

Si todos los atributos se declaran public, permite cambiar sus valores sin
comprobar 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;
}

Programacin II (Java)

Encapsulacin 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
}

Programacin II (Java)

Encapsulacin y
Constructores

Modificador private
Este modificador impide que otros objetos puedan
acceder a los objetos de una determinada clase, sus
atributos y sus mtodos.
Para hacer que un atributo o mtodo sea de acceso
privado, ponga el modificador private delante del
mtodo o de la variable correspondiente al atributo.

Programacin II (Java)

Mtodo 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;
}

Encapsulacin y
Constructores

Programacin II (Java)

Encapsulacin y
Constructores

Modificador private

El siguiente cdigo no se compila, porque intenta acceder a variables de acceso


privado:
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
}
}

Programacin II (Java)

Encapsulacin y
Constructores

Mtodos get y set


Si se asigna el modificador private a los atributos, Como
accedemos a ellos?
Un objeto puede acceder a ellos si proporcionan un metodo
public para cada operacin.

Es habitual proporcionar mtodos public para establecer(set)


y obtener(get) el valor contenido en cada atributo private de
una clase.

Programacin II (Java)

Mtodos get y set


Por ejemplo:
public class PrivateCamisa{
private int camisaId=0;
private String descripcin = -descripcion-;
private char color = U;
public char getColor(){
return color;
}
public void setColor(char newColor){
color = newColor;
}
}

Encapsulacin y
Constructores

Programacin II (Java)

Encapsulacin y
Constructores

Mtodos get y set


Uso de mtodos get y set:
public class PrivateCamisa{
public static void main (String args[]){
Camisa camisa = new Camisa();
char color;
// Establece un cdigo de color
camisa.setColor(R);
color = camisa.getColor();
System.out.println(Codigo de color = +color);
// Establece un cdigo de color no valido
camisa.setColor(Z);
color = camisa.getColor();
System.out.println(Codigo de color = +color);
}
}

Programacin II (Java)

Encapsulacin y
Constructores

Mtodos get y set


Los mtodos que utilice deberan contener lgica de negocio
adicional 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(Cdigo de color no vlido);
}
}

Programacin II (Java)

Encapsulacin y
Constructores

Ejercicio: Acceso a los atributos encapsulados de una clase.


1.- Cree una clase llamada ManejoDeFechas, con tres variables de
tipo int llamadas, dia, mes y anio.
2.- Agregue los mtodos siguientes
a. Mtodo get y set para las tres variables.
b. Mtodo setFecha, que acepte tres argumentos de tipo int y asigna su
valor respectivamente a las variables dia, mes y anio. Antes de
asignar los parmetros a las variables, valdelos para que el da
no supere los valores 30,31, 28 o 19 (en funcin del mes), el mes
sea un valor de 1 y 12, y el ao se site entre los valores 1000 y
9999. Deber de aparecer mensajes de error en caso de que falle la
validacin.
c. Mtodo desplegarFecha, muestre en pantalla la fecha con el formato
siguiente : La fecha es: dd/mm/yyyy.
3.- Cree una clase FechasTest dentro del main agregue lo siguiente
a. Cree e inicialice un objeto de tipo ManejoDeFechas.
b. Llame al mtodo setFecha y psele valores.
c. Muestre en pantalla la fecha. Por ejemplo:
La fecha es: dd/mm/yyyy

Herencia
JAVA

Programacin II (Java)

Herencia

Uso de la herencia
En una empresa, se ha decidido que se ample la lnea de
productos para incluir gorros, calcetines y pantalones, al grupo
de camisas que ya venda.
A fin de poder desarrollar las clases necesarias para hacer la
actualizacin, deber realizar un breve anlisis. Adems de
recibir la siguiente informacin:
Solo vendern gorros y calcetines de talla nica.
Los modelos de pantalones sern distintos para hombre y mujeres.
Los pantalones se vendern en color azul y tostado, mientras que
los gorros, los calcetines y las camisas se vendern en rojo, azul y
verde

Programacin II (Java)

Herencia

Uso de la herencia
Gorros

Calcetines

Pantalones

Camisas

id

id

id

id

precio

precio

precio

Precio

descripcion

descripcion

tamao

Tamao=S,M,L

color=R,A,V

color=R,A,V

sexo=F , M

descripcion

cantidadEnExistencia

cantidadEnExistencia

descripcion

color=R,A,V

calculaId()

calculaId()

color=A,T

cantidadEnExistencia

despliegaInfo()

despliegaInfo()

cantidadEnExistencia

calculaId()

calculaId()

despliegaInfo()

despliegaInfo()

Programacin II (Java)

Herencia

Uso de la herencia
La herencia permite a los programadores poner miembros

comunes (variables y mtodos) en una clase y hacer que


otras clases HEREDEN esos miembros comunes.

La forma de comprobar si un vinculo de herencia


propuesto es vlido es utilizar la expresin es un/una.
Por ejemplo:
Un automvil es un vehiculo.

Programacin II (Java)

Herencia

Superclase y subclase
Las clases que contiene miembros en comn 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 jerarqua de clases de


la tecnologa Java.

Programacin II (Java)

Herencia

Superclase y subclase
Por ejemplo:

Superclase

Figura
Empleado

Circulo, Triangulo, Rectngulo.


Docente, Administrativo, Secretaria

CuentaBancaria

CuentaDeCheque, CuentaDeAhorro

Programacin II (Java)

Herencia

Jerarqua de herencia para objetos MiembroComunidad


universitaria.
Por ejemplo:

MiembroComunidad
Empleado

Docente

Administrativo

Estudiante

Exalumno

Programacin II (Java)

Herencia

Uso de la herencia
Por ejemplo:

Prendas
Id
precio
descripcion

cantidadEnExistencia

Gorros

Calcetines

Pantalones

Camisas

color=R,A,V

color=R,A,V

tamao

tamao

genero=F , M

color=R,A,V

color=A,T

Declaracin de Clases

modificador class UnaClase extends Superclase implements Interfaz{}

Modificadores
De acceso (default, public)
De comportamiento (abstract, final)
extends
identifica superclase
implements
identifica interfaz que se debe de implementar

Declaracin - Acceso a Clases


Clase A tiene acceso a Clase B, se refiere
a:
Clase A puede crear instancias (Objetos) de la clase
B
Clase A puede extender a la clase B (Herencia)
Accesar sus metodos, dependiendo de los
modificadores de acceso de los mismos.

Declaracin 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;

package edu.uanl.maestros;

class Estudiante {

import edu.uanl.estudiantes.Estudiante;

class Maestro{
//NO podra crear instancias de estudiante
}

Declaracin Acceso Publico


Se antepone la palabra public a la clase
Todas las clases podrn crear instancias de la clase

package edu.uanl.estudiantes;

package edu.uanl.maestros;

public class Estudiante {

import edu.uanl.estudiantes.Estudiante;

class Maestro{
//PODR crear instancias de estudiante
}

Declaracin - Comportamiento
final
Una 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

Programacin II (Java)

Herencia

Creacin 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 seccin van los getter y setter de cada atributo*/

Programacin II (Java)

Herencia

Creacin 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 seccin van los getter y setter de cada atributo*/

Programacin II (Java)

Sobreescritura

La sobreescritura de mtodos es una caracterstica ms


de la herencia en Java.
Se dice que un mtodo est sobreescrito, cuando las
instrucciones que se ejecutan dentro de este tienen
diferente implementacin a la del mtodo que
heredaron.
Para poder sobeescribir un mtodo es utilizar el mismo
nombre del mtodo en la subclase, el mismo tipo de
retorno y la misma lista de argumentos de llamada, y en
el cuerpo de ese mtodo en la subclase proporcionar un
cdigo diferente

Programacin II (Java)

Sobreescritura

Las reglas bsicas para la sobreescritura de mtodos son las


siguientes:
La lista de argumentos del mtodo 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 ms restrictivo.
El modificador de acceso puede ser menos restrictivo.
Los mtodos de instancia pueden ser sobreescritos solamente si han sido
heredados por la subclase.
No se puede sobreescibir un mtodo marcado como final.
Si un mtodo no puede ser heredado, no puede ser sobreescrito.

Programacin II (Java)

Sobreescritura

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);
}
}

Clases Abstractas
Hay clases que no deberan ser instanciadas.
Animal
comida
hambre
ubicacion
limites
hacerRuido()
comer()
dormir()
vagar()

Canino

vagar()
Perro

Lobo

hacerRuido()
comer()

hacerRuido()
comer()

Felino

vagar()
Gato

Len

hacerRuido()
comer()

hacerRuido()
comer()

Clases Abstractas
Te has preguntado que forma tendra una clase
Animal?? Como te puedes dar cuenta necesitamos la
clase Animal solo para heredar a otras clases y hacer
polimorfismo de sus mtodos. A este tipo de clases las
conocemos como Abstractas, ya que de esta solo
sabemos los mtodos que realiza y las variables de
instancia que la conforman.

Clases Abstractas
Una clase Abstracta no tiene cuerpo, solo tiene
declarados los mtodos que implementa y sus variables
de instancia.

Clases Abstractas
Al marcar la clase como abstract, el compilador detendr
a cualquier cdigo de crear una instancia de ese tipo de
clase.
abstract class Canine extends Animal {
public void roam() { }
}

El nico propsito de una clase abstracta es que otras


clases extiendan de ella

Mtodos Abstractos
Cuando definimos una clase como abstracta, le estamos
diciendo al compilador que la clase DEBE ser
extendida, cuando definimos un mtodo como abstracto
le estamos diciendo al compilador que el mtodo DEBE
ser sobreescrito.
public abstract void comer() ;

Mtodos Abstractos
Un mtodo abstracto no tiene cuerpo. No abre ni cierra
braquets { }, termina con ;
public abstract void comer() ;

Si un mtodo se declara abstracto, la clase que lo


contiene DEBE ser marcada como abstracta. NO SE
PUEDE TENER un mtodo abstracto en una clase no
abstracta.
Al extender una clase abstracta, TODOS los mtodos
declarados como abstractos, deben ser implementados
(sobreescritos)

Programacin II (Java)

Herencia

Ejercicio
Representar la jerarqua de clases de publicaciones que
se distribuyen en una librera: revistas y libros, etc.
Todas las publicaciones tienen en comn una editorial y una fecha
de publicacin. Las revistas tienen una determinada periodicidad, lo
que implica el numero de ejemplares que se publican al ao y, por
ejemplo, el numero de ejemplares que se ponen en circulacin. Los
libros por el contrario, tienen un cdigo ISBN y el nombre del autor.

Programacin II (Java)

Herencia

Ejercicio
Publicacin

Revista

Libro

Programacin II (Java)

Herencia

Ejercicio: Diseo de superclase y subclases


Publicaciones Elizondo, tiene empleados que ocupan diferentes cargos. Los
cargos son: tcnicos, ilustradores grficos, gerentes y editores.
Publicaciones Elizondo, le pide que cree un programa para llevar el control de la
informacin relativa a cada uno de sus trabajadores. Esta informacin se
compone 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). Adems:

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


Los tcnicos, ilustradores y editores deben tener una lista de habilidades que poseen.
Los editores deben tener un valor que indique si prefieren realizar la edicin en formato
electrnico o en papel.

Todas las subclases deben de incluir un mtodo para mostrar la informacin


segn el tipo de empleado.
Demuestre la encapsulacin de cada una de las clases de su diseo incluyendo
en l los mtodos get y set.

Programacin II (Java)

Herencia

Diseo de Clases
Empleado
String nombre
String cargo
int id
int nivel
calcularId()

Editor
String[] habilidades

Gerente

Tecnico

Ilustrador

boolean formatoEdicion

Empleado[] listaEmp

String[] habilidades

String[] habilidades

desplegarInfo()

desplegarInfo()

desplegarInfo()

desplegarInfo()

getHabilidades()
setHabilidades(String[]
h)

Programacin II (Java)

Herencia

Ejercicio: creacin y uso de superclase y subclases


1.- Cree las clases del diseo
2.- Cree mtodos para mostrar cada una de la informacin del trabajador
(subclases)
3.- Cree mtodos 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

Programacin II (Java)

Encapsulacin y
Constructores

Composicin
Una clase puede tener referencias a objetos de otra
clase como miembros. A dicha capacidad se le
conoce como composicin.
Por ejemplo, un objeto de la clase RelojAlarma
necesita saber la hora actual y la hora en la que
sonara la alarma, por lo que es razonable incluir dos
referencias a objetos Tiempo como miembros del
objeto RelojAlarma.
La composicin es una forma de reutilizacin de
software, en donde una clase tiene como miembros
referencias o objetos de otras clases.

Programacin II (Java)

Composicin
Composicin tiene un
Herencia es un
Polimorfismo.

Encapsulacin.

Encapsulacin y
Constructores

Programacin II (Java)

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);
}
}

Encapsulacin y
Constructores

Programacin II (Java)

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);
}
}

Encapsulacin y
Constructores

Programacin II (Java)

Composicin

Ejercicio: Dada la siguiente imagen de clase Alumno.

Cree la clase alumno en java


Defina los atributos de la clase implementando Encapsulacin y Composicin.
Defina si as se requiere las OTRAS clases de las que se compone Alumno(Alumno tiene un ?)
Defina los mtodos registrar, obtener, modificar, eliminar y listadoDeAlumnos en la clase de Alumno, la implementacin
de stos mtodos es slo con el return.