Académique Documents
Professionnel Documents
Culture Documents
Programacin II.
Modulo 1.
Diseo e implementacin de clases
4.1
Programacin II.
Modulo 1.
Diseo e implementacin de clases
Clase Interior
Se puede definir una clase embebida de la siguiente forma:
class Externa {
...
class Interna {
...
}
4.2
Programacin II.
Modulo 1.
Diseo e implementacin de clases
Clase Interior
La clase Externa
puede instanciar y
usar la clase
Interna como
cualquier otra, sin
limitacin ni
cambio en la
sintaxis de acceso:
4.3
class Externa {
...
class Interna {
...
}
void metodo() {
Interna i = new Interna(. . .);
...
}
}
Programacin II.
Modulo 1.
Diseo e implementacin de clases
Clase Interior
Clases que se definen dentro de otras
Empaquetar aquellas clases que no tienen utilidad fuera del
contexto de esta.
La clase interior puede ser public, protected o private
La clase interior queda ligada a la que la contiene mas no
debe confundirse con la relacion de composicion.
4.4
Programacin II.
Modulo 1.
Diseo e implementacin de clases
public class CExterna {
private double atributo1;
private double atributo2;
public CExterna(double a1, double a2) {
atributo1 = a1;
atributo2 = a2;
}
public String mostrarResultados() {
CInterna ci = new CInterna();
String salida = String.format("Suma: %.2f \n"
+ "Resta: %.2f",
ci.sumar(),ci.restar());
return salida;
}
Clase Interior
[ejemplo]
class CInterna {
private double aux;
public CInterna() {
aux = 0;
}
public double sumar() {
aux = atributo1 + atributo2;
return aux;
}
public double restar() {
aux = atributo1 - atributo2;
return aux;
}
}
}
4.5
Programacin II.
Modulo 1.
Diseo e implementacin de clases
4.6
Programacin II.
Modulo 1.
Diseo e implementacin de clases
Variables finales
Son variables cuyo valor una vez inicializadas no cambian
La inicializacion puede estar separada de la declaracion
4.7
Programacin II.
Modulo 1.
Diseo e implementacin de clases
Clases final
Una clase final no puede ser heredada por otra clase (no puede
tener clases derivadas)
Una clase final se ejecuta de modo mas eficiente, pues JVM ya
sabe que sus metodos no pueden ser redefinidos por otras clases
derivadas.
final class ejemplo {
/* codigo ..
}
4.8
Programacin II.
Modulo 1.
Diseo e implementacin de clases
Metodos final
Un metodo definido como final no puede ser redefinido por
una clase que derive de su propia clase.
Ejemplo:
final void ejemplo() {
/* codigo
}
4.9
Programacin II.
Modulo 1.
Diseo e implementacin de clases
4.10
Programacin II.
Modulo 1.
Diseo e implementacin de clases
Se puede llamar al
mtodo sumar o restar
directamente usando
el nombre de la clase,
sin crear un objeto.
Programacin II.
Modulo 1.
Diseo e implementacin de clases
4.12
Programacin II.
Modulo 1.
Diseo e implementacin de clases
----------------------MAIN------------------------
4.13
Programacin II.
Modulo 1.
Diseo e implementacin de clases
tipos de metodos
Constructores: mtodo para crear un nuevo objeto de la clase.
Destructores / Finalizadores: mtodo para eliminar un objeto de una clase.
Modificadores: mtodos para asignar el valor de un atributo Prefijo: SET
Analizadores: mtodos para recuperar el valor de un atributo. Prefijo: GET
4.14
Programacin II.
Modulo 1.
Diseo e implementacin de clases
4.15
Programacin II.
Modulo 1.
Diseo e implementacin de clases
public banco(String n) {
nombre = n;
clientes = new clienteB[10];
}
public void AgregarCliente( clienteB c) {
if (c.esMayor()) {
clientes[cont] = c;
cont++;
}
}
public String verClientes() {
String salida = "";
for(int i=0;i<cont;i++)
salida += "Cliente: " + clientes[i].nombre + "\n";
return salida;
}
}
4.16
Programacin II.
Modulo 1.
Diseo e implementacin de clases
Programacin II.
Modulo 1.
Diseo e implementacin de clases
4.18
Programacin II.
Modulo 1.
Diseo e implementacin de clases
Sobrecarga de metodos
4.19
Programacin II.
Modulo 1.
Diseo e implementacin de clases
Sobrecarga de constructores
4.20
Programacin II.
Modulo 1.
Diseo e implementacin de clases
Inicializadores
Es un algo parecido a un
mtodo que se llama
automticamente al crear
la clase. Se diferencia
del constructor en que no
es llamado para cada
objeto, sino una sola vez
para toda la clase.
Primero se ejecutarn los
inicializadores de clase (los
rojos), los de instancia (en
azul) y al final el
constructor
4.21
class C {
static int a;
int b;
public C() {
System.out.printf("Valor de a:
%1s\nValor de b:%2s\n", a, b);
}
{
b = a * 2;
}
static {
a = 15;
}
}
Programacin II.
Modulo 1.
Diseo e implementacin de clases
Inicializadores
public class inicializadores {
static int a = 2;
int b;
public inicializadores(int c) {
System.out.printf("Valor de a:%1d\nValor de
b:%2d\n", a, b);
a += c;
}
{
b = a * 2;
}
static {
a = 15;
}
4.22
Programacin II.
Modulo 1.
Diseo e implementacin de clases
Finalizadores
class ClaseFinalizada{
ClaseFinalizada() { // Constructor
// Reserva del recurso no Java o
recurso compartido
}
protected void finalize() {
// Liberacin del recurso no Java o
recurso compartido
}
}
Destruccion personalizada
4.23
Programacin II.
Modulo 1.
Diseo e implementacin de clases
4.24
Programacin II.
Modulo 1.
Diseo e implementacin de clases
PREGUNTAS
3.25
Programacin II.