Sunteți pe pagina 1din 26

Modulo 1.

Diseo e implementacin de clases

DISENO E IMPLEMENTACION DE CLASES

Programacin II.

Modulo 1.
Diseo e implementacin de clases

Control de acceso a los miembros


Uso del this
Inicializadores & Constructores
Constructores sobre cargados
Uso del Set y Get
Otros tipos de mtodos

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]

---------------------------- MAIN -------------------------public static void main(String[] args) {


CExterna ce = new CExterna(12.5,8.5);
System.out.println(ce.mostrarResultados());

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

--------- Salida ------Suma: 21.00


Resta: 4.00

}
}

4.5

Programacin II.

Modulo 1.
Diseo e implementacin de clases

Inicializacion por defecto de los


objetos en Java
Las variables de instancia de tipo numerico se inicializan en 0
Las variables de instancia tipo char se inicializan con \n
Las de tipo boolean se inicializan en false
Las variables que no sean de tipo primitivo se inicializan en null

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

Ej: final double MAXNUM = 100;

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

Visibilidad de los miembros

4.10

Programacin II.

Modulo 1.
Diseo e implementacin de clases

Metodos de clase (static)


public class Calculos {
static double sumar(double num1, double num2) {
return num1 + num2;
}
static double restar(double num1, double num2) {
return num1-num2;
}
}

Se puede llamar al
mtodo sumar o restar
directamente usando
el nombre de la clase,
sin crear un objeto.

System.out.println("Suma: " + Calculos.sumar(12, 7));


System.out.println("Resta: " + Calculos.restar(12, 7));
4.11

Programacin II.

Modulo 1.
Diseo e implementacin de clases

Variables de clase (static)


Un dato esttico es una variable miembro que no se asocia a un
objeto (instancia) de una clase, sino que se asocia a la clase
misma; no hay una copia del dato para cada objeto sino una sola
copia que es compartida por todos los objetos de la clase.

4.12

Programacin II.

Modulo 1.
Diseo e implementacin de clases

Variables de clase (static)


public class EjStatic {
static double num1 = 0;
private double num2 = 0;

EjStatic ej1 = new EjStatic(10);


System.out.println(ej1.valores());

public EjStatic(double n2) {


num2 = n2;
num1++;
}

EjStatic ej2 = new EjStatic(20);


System.out.println(ej2.valores());

public String valores() {


return String.format(" Valor num1: %.2f \n"
+ "Valor de num2: %.2f \n",num1,num2);
}
}

----------------------MAIN------------------------

EjStatic ej3 = new EjStatic(30);


System.out.println(ej3.valores());
Valor num1: 1.00
Valor de num2: 10.00
Valor num1: 2.00
Valor de num2: 20.00
Valor num1: 3.00
Valor de num2: 30.00

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

Uso del this

4.15

Programacin II.

Modulo 1.
Diseo e implementacin de clases

Uso del this como parametro


public class banco {
private String nombre;
private clienteB[] clientes;
private int cont = 0;

public class clienteB {


public String nombre;
private double edad;
public clienteB(String n, double e) {
nombre = n;
edad = e;
}

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

------- Salida --------nombre


nombre2

public boolean esMayor() {


return (edad >= 18?true:false);
}
public void AbrirCuenta(banco b) {
b.AgregarCliente(this);
}
}
banco b = new banco("XYZ");
clienteB cb1 = new clienteB("nombre",20);
clienteB cb2 = new clienteB("nombre2",15);
clienteB cb3 = new clienteB("nombre3",25);
cb1.AbrirCuenta(b);
cb2.AbrirCuenta(b);
cb3.AbrirCuenta(b);
System.out.println(b.verClientes());

Programacin II.

Modulo 1.
Diseo e implementacin de clases

Uso del Set


Prefijo SET
Se utiliza para asignar un valor a algun atributo privado o para
inicializar alguno de ellos, por lo general no retornan algun
valor en especifico y siempre contienen valores que se pasan
por parametro.
protected void setSalario(double sal)
{
this.salario = sal;
}
4.17

Programacin II.

Modulo 1.
Diseo e implementacin de clases

Uso del Get


Prefijo GET
Se utiliza para obtener un valor contenido en la clase que
estamos accesando, siempre retornara algun valor en
especifico.
protected double getSalario()
{
return this.salario;
}

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

---------------------- MAIN -----------------------------inicializadores a = new inicializadores(3);


inicializadores a1 = new inicializadores(2);
inicializadores a2 = new inicializadores(1);

------- Salida --------Valor de a:15


Valor de b:30
Valor de a:18
Valor de b:36
Valor de a:20
Valor de b:4

4.22

Programacin II.

Modulo 1.
Diseo e implementacin de clases

Finalizadores
class ClaseFinalizada{

A veces una clase mantiene un


recurso que no es de Java como
un descriptor de archivo
o un tipo de letra del sistema de
ventanas. En este caso sera
acertado el utilizar la
finalizacin explcita, para
asegurar que dicho recurso se
libera.

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

Proceso de creacion de un objeto


1. Al crear el primer objeto de la clase o al utilizar el primer mtodo o
variable static se localiza la clase y se carga en memoria.
2. Se ejecutan los inicializadores static (slo una vez).
3. Cada vez que se quiere crear un nuevo objeto:
se comienza reservando la memoria necesaria
se da valor por defecto a las variables miembro de los tipos
primitivos
se ejecutan los inicializadores de objeto
se ejecutan los constructores

4.24

Programacin II.

Modulo 1.
Diseo e implementacin de clases

PREGUNTAS

3.25

Programacin II.

S-ar putea să vă placă și