![]() |
Curso
JAVA |
|
www.bit.es - Calendario de cursos - Solicitud de información |
Curso
Java
Curso Analista Programador entorno
Java
Objetivos de la Unidad:
Nota: El material que viene a continuación debe servir de repaso o referencia para quien conozca C++ y programación orientada a objetos y entenderlo podría servir como objetivo para quien no tenga estos conocimientos.
Clases
int x;
int y;
int r;
// métodos
public double
area()
{
return Math.PI * Math.pow(r, 2);
}
}
Tipos
Ámbitos
Sobrecarga de métodos
<Nom. clase>.<Nom.
método>@<Tipo parámetro 1>@<Tipo parámetro 2>...
Circulo.area@void
Circulo.area@int
Orientación a objetos
Ejemplos de constructores
public Circulo(Circulo
c)
{
this.x = c.x;
this.y = c.y;
this.r = c.r;
}
Herencia
Motivaciones y prestaciones de
la herencia
Aspectos prácticos de la herencia
ObjGraf
|
+----- Rectangulo
+----- Circulo
Polimorfismo
Clases abstractas
Ejemplo completo de
polimorfismo
z[0] = new
Rectangulo(1, 5, 3, 4);
z[1] = new
Circulo(1, 5, 10);
// Recorrido del array
e impresión de la area para cada uno de ellos
for (int i = 0; i
< z.length; i++)
{
double sup = z[i].area();
System.out.println("Area de z[" + i + "]: " + sup);
}
}
}
//
//
// ObjGraf.java
//
//
// ObjGraf representa al
Rectangulo, al Circulo y al resto en general.
// Se hace responsable de
las características comunes atodos ellos como la x y la y,
// tanto en lo referente
a los atributos como a los métodos.
// Desde un método de
otra clase se puede acceder a la x y la y mediante los métodos
// set y get
correspondientes, los cuales son públicos.
// El acceso directo a x
a y desde sus clases hijas (Rectangulo y Circulo) no está
// permitido por private.
Para abrir la posibilidad de acceso a las clases hijas pero
// no al resto de las
clases existe el nivel protected.
public abstract class ObjGraf
{
private int
x; // coordenada x del centro
private int
y; // coordenada y del centro
// metodo abstracto
area
abstract public
double area();
// Constructor por defecto: El que da los valores por defecto
// Es condición obligatoria para que la clase defina un "Java
Bean"
public ObjGraf()
{
setX(0);
setY(0);
}
public ObjGraf(int xInicial, int yInicial)
{
setX(xInicial);
setY(yInicial);
}
// set y get de la x
public void
setX(int valor)
{
x = valor;
}
public int getX()
{
return x;
}
// set y get de la y
public void
setY(int valor)
{
y = valor;
}
public int getY()
{
return y;
}
}
//
//
// Rectangulo.java
//
//
public class Rectangulo
extends ObjGraf
{
// datos de la
clase o atributos
private int b; //
base
private int h; //
altura
// Constructor por defecto: El que da los valores por defecto
// Es condición obligatoria para que la clase defina un "Java
Bean"
public Rectangulo()
{
// la ausencia de una llamada a super() implica implícitamente que
ésta se realiza.
setBase(10);
setAltura(5);
}
// Los constructores
son en general public}
public
Rectangulo(int xInicial, int yInicial, int baseInicial, int alturaInicial)
{
// este
constructor inicializa los atributos validando
super(xInicial,
yInicial);
setBase(baseInicial);
setAltura(alturaInicial);
}
// método área
public double
area()
{
return getBase() *
getAltura();
}
// set y get de la
altura
public void
setAltura(int valor)
{
if (valor > 0)
{
h = valor;
}
else
{
h = 0;
}
}
public int getAltura()
{
return h;
}
// set y get de la base
public void
setBase(int valor)
{
if (valor > 0)
{
b = valor;
}
else
{
b = 0;
}
}
public int getBase()
{
return b;
}
}
//
//
// Circulo.java
//
//
public class Circulo extends ObjGraf
{
// datos de la
clase o atributos
private int r; //
radio
// Constructor por defecto: El que da los valores por defecto
// Es condición obligatoria para que la clase defina un "Java
Bean"
public Circulo()
{
// la ausencia de una llamada a super() implica implícitamente que
ésta se realiza.
setRadio(10);
}
// Los constructores
son en general public
public Circulo(int
xInicial, int yInicial, int radioInicial)
{
// este
constructor inicializa los atributos validando
super(xInicial,
yInicial);
setRadio(radioInicial);
}
// método área
public double
area()
{
return 3.1416 *
getRadio() * getRadio();
}
// set y get de la
altura
public void
setRadio(int valor)
{
if (valor > 0)
{
r = valor;
}
else
{
r = 0;
}
}
public int getRadio()
{
return r;
}
}
Interfaces: Cuando lo que se heredan
son compromisos
Paquetes
package ejemplos.polimorfismo;
// aquí vendría al código de
la clase Rectangulo del ejemplo
// anterior:
public class Rectangulo
{ ...
Mac: cursojava:ejemplos:polimorfismo
Inner classes
Distinguiremos dos
tipos de inner classes:
No anónimas:
class A
{
---
class B
{
...
Desde el exterior el tipo B es A.B
El fichero .class generado es A$B.class
Anónimas:
Es un mecanismo muy utilizado para la impementación de eventos en el nuevo modelo 1.1
para evitar tener que implementar un interface para cada listener.
Ejemplo:
...
button1.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
button1_actionPerformed(e);
}
});
...
En este caso se crea implícitamente un objeto de una subclase anónima de ActionListener
en la que se implementa el método actionPerformed y dicho objeto es pasado como
parámetro a addActionListener.
Si este código forma parte de un formulario llamado Frame1 se genera el fichero
Frame1$1.class que corresponde a la clase anónima.x
Unidad anterior - Unidad siguiente