Upload
angel-alejandro
View
7
Download
0
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 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