PDF de programación - Curso de Programación en Java - Programación orientada a objetos

Imágen de pdf Curso de Programación en Java - Programación orientada a objetos

Curso de Programación en Java - Programación orientada a objetosgráfica de visualizaciones

Publicado el 9 de Mayo del 2017
977 visualizaciones desde el 9 de Mayo del 2017
1,5 MB
4 paginas
Creado hace 11a (02/05/2012)
2/5/12
 

Repaso

! Cohesión
! Acoplamiento
! Visibilidad/Control de acceso

!   Public
!   Private
!   Package

! Métodos get/set
! Métodos estáticos o de clase
! Modificador final
! Paquetes

Programación orientada a

objetos

Curso INEM. Programación en Java

Santiago Muelas Pascual

[email protected]



Herencia

Superclase/Subclase

!   La experiencia en el desarrollo de SW ha demostrado que
una parte significativa de código trata con temas que están
muy relacionados.

!   La herencia es un mecanismo que sirve para reutilizar clases
!   Se utiliza cuando existen clases que comparten muchas de

sus características

!   Se extiende la funcionalidad de clases más genéricas

!   Cuando se crea una clase, en vez de crear todos los miembros

(atributos + métodos), se puede designar que la nueva clase
herede los miembros de una clase existente

!   La clase existente se corresponde con la superclase
!   La nueva con la subclase
!   Cada subclase puede convertirse en superclase de futuras

subclases

Ejemplo

Superclase/Subclase

!   La clase Vehículo es la superclase de las subclases

Motocicleta y Automóvil

!   Tanto las clases motocicleta y automóvil comparten a la

superclase Vehículo
!   Pero no todos los objetos de la clase vehículo se comportan

como los de la clase Automóvil o Motocicleta

!   Una superclase puede tener cualquier número de subclases

!   Aunque una subclase sólo puede tener asociada a una

superclase
!   No hay herencia múltiple!!!


!   Una subclase normalmente añade sus propios atributos o

variables de instancia y métodos
!   Es más específica que la superclase
!   Representa a un grupo más especializado de objetos

!   La subclase debe comportarse al menos como su superclase y

además puede exhibir nuevos comportamientos
!   No debería romper el comportamiento esperado de la

superclase

1
 

Sintáxis

class Subclase extends Superclase {
}
Ej:
class Perro extends Mamifero {
}

super

! Sirve para acceder a miembros de la superclase desde la

subclase



super.metodoquesea(parámetros)

super.atributo

super

super

! También sirve para llamar al constructor desde el constructor

de la subclase

!   super(parámetros) : llamada al constructor de la superclase

class Motocicleta extends Vehiculo{

!   Si no añade la llamada desde una subclase, el compilador

siempre añade una llamada super() por defecto

!   Si el constructor de la superclase recibe parámetros, super

tiene que llamarse con el tipo de parámetros adecuado

Motocicleta() {

super();

}

}



¿Es correcto?

¿Es correcto?

class Vehículo {

int matricula;

Vehículo(int matricula) {

this.matricula = matricula;

}

}

class Motocicleta extends Vehiculo {

}

class Vehículo {

int matricula;

class Motocicleta extends Vehiculo {

Motocicleta() {

Vehículo(int matricula) {

}

this.matricula = matricula;

}

}

}

2/5/12
 

2
 

Ejercicio

Visibilidad/Control de acceso

!   Declare una clase Mamífero que tenga como atributos el
nombre y el número de patas así como un constructor que
reciba un nombre y un número de patas e inicialice los
atributos o variables de instancia correspondientes.

!   Cree la clase Perro como subclase de Mamífero. La clase

Perro contendrá a un atributo raza (tipo String) y un
constructor que reciba el nombre y la raza y establezca los
valores adecuados en los atributos.

!   Puede (y suele) haber distintos niveles de visibilidad para los

miembros (atributos y métodos) de una clase.

!   Existen cuatro tipos de modificadores:

! public: se puede acceder desde cualquier lugar
! private: sólo se puede acceder desde la propia clase
! protected: sólo se puede acceder desde la propia clase o desde

una clase que herede de ella

!   Por defecto (package): Se puede acceder desde las clases

pertenecientes al mismo paquete
!   Se verá más adelante

¿Es correcto?

Redefinición de métodos

class Vehículo {

class Motocicleta extends Vehiculo {

private int matricula;

Motocicleta(int matricula) {

Vehículo(int matricula) {

super(matricula);

this.matricula = matricula;

super.matricula = 34;

}

}

}

}

!   Se puede modificar localmente el comportamiento de los

métodos heredados

!   Para ello con redeclarar un método declarado en la clase

padre, se podría cambiar el comportamiento

!   De esta manera objetos de distintos subclases pueden

responder de forma diferente a la misma llamada

!   Permite programar de manera más general

Ejemplo

Ejercicio

!   ¿Se mueve igual un pez, un pájaro o una rana?
!   En cambio, todos son animales y podrían heredar el método

mover de dicha clase

!   Gracias a la redefinición cada objeto concreto realizará la

operación mover como corresponda

!   Declarar la clase Animal que contenga un atributo nombre y

el método mover. Este método deberá escribir por pantalla
“moviéndome”.

!   Declarar la clase Rana y redeclarar el método mover. El

método deberá imprimir “saltando”.

!   Repetir la operación con la clase Pajaro. El método deberá

imprimir “volando”.

!   Crear un objeto de la clase Rana, otro de la clase Pájaro y
otro de la clase Animal. Llamar al método mover de cada
uno de ellos.

2/5/12
 

3
 

Redefinición vs Sobrecarga

public class Animal {
public void comer() {
System.out.println(“comiendo genérico”);
}
}
public class Caballo extends animal {
public void comer() {
System.out.println(“caballo comiendo heno”);
}
public void comer(String s) {
System.out.println(“Caballo comiendo “ + s);
}
}

¿Cuál es la salida?

Animal a = new Animal();
a.comer();

Caballo h = new Caballo();
h.comer();

h.comer(“Manzanas”);

Animal a2 = new Animal();
A2.comer(“Zanahorias”);

Otros aspectos

!   Los métodos estáticos no puede ser redefinidos

!   Van ligados a la clase

!   No podemos redefinir un método con una visibilidad más

restrictiva

class Padre{

public void met() {…}

}

Class Hija extends Padre {

private void met() {…}

}

Otros aspectos

Herencia y final

!   @Override

!   Para indicar al compilador que estamos redefiniendo un método

de una clase padre.
!   Y así pueda comprobar que coincide el nombre y los parámetros

class Padre{
void metodo(int a){}
}


class Hija extends Padre{
@Override
void metodo(String a){}
}

// Sin Override el compilador piensa que
estamos sobrecargando

!   En caso de no querer la redefinición de métodos o incluso la

creación de subclases (herencia) :

public final void mover()

public final class Animal {…}

Clase Object

Método toString

! Realmente todas las clases que creemos son subclases…
!   … de la clase Object
! Esta clase tiene métodos habituales que están disponibles

para cualquier clase que creemos

!   Los más habituales son:

!   equals
!
toString
!   clone
! hashCode


!   Devuelve un representación en un String de un objeto
!   Por defecto devuelve el nombre del paquete, el de la clase y

una representación hexadecimal correspondiente al valor
devuelto por el método hashCode

! System.out.println(miobjeto) llama a toString del objeto

miobjeto

String toString() {…}

2/5/12
 

4
  • Links de descarga
http://lwp-l.com/pdf3443

Comentarios de: Curso de Programación en Java - Programación orientada a objetos (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad