PDF de programación - Prácticas de Programación - Tema 2. Clases y objetos en Java

Filtrado por el tag: informática
Imágen de pdf Prácticas de Programación - Tema 2. Clases y objetos en Java

Prácticas de Programación - Tema 2. Clases y objetos en Javagráfica de visualizaciones

Publicado el 14 de Enero del 2017
1.763 visualizaciones desde el 14 de Enero del 2017
199,8 KB
11 paginas
Creado hace 14a (23/02/2010)
Prácticas de Programación

Tema 1. Introducción al análisis y diseño de programas

Tema 2. Clases y objetos en Java

Tema 3. Herencia y Polimorfismo
Tema 4. Tratamiento de errores
Tema 5. Aspectos avanzados de los tipos de datos
Tema 6. Modularidad y abstracción: aspectos avanzados
Tema 7. Entrada/salida con ficheros
Tema 8. Verificación y prueba de programas

Prácticas de Programación

Tema 2. Clases y objetos en Java

© M. Aldea y M. González

23/02/10

Tema 2. Clases y objetos en Java

Introducción

2.1.
2.2. Creación e inicialización de objetos
2.3. Tipos primitivos, referencias y objetos
2.4. Recolector de basura
2.5. Comparación de objetos
2.6. Control de acceso
2.7. Métodos y campos de clase (o estáticos)
2.8. Anidamiento de clases
2.9. Bibliografía

Prácticas de Programación

Tema 2. Clases y objetos en Java

© M. Aldea y M. González

23/02/10



1



2

3

2.1 Introducción

2.1 Introducción
La clase es la unidad básica de estructuración en un lenguaje
orientado a objetos
Está formada por miembros:

• atributos (también llamados campos): almacenan el estado
• métodos: definen el comportamiento

Una clase es una descripción de un conjunto de objetos con los
mismos atributos y comportamiento

public class UnaClase {

atributos
constructores
métodos

}

Un objeto es una instancia o ejemplar concreto de una clase

Prácticas de Programación

© M. Aldea y M. González

23/02/10

Tema 2. Clases y objetos en Java

2.2 Creación e inicialización de objetos

2.2 Creación e inicialización de objetos
En el lenguaje Java los objetos se crean con el operador new:

UnaClase obj = new UnaClase();

Los constructores son métodos especiales que

Se invoca el CONSTRUCTOR

• se llaman igual que la clase
• no tienen tipo de retorno

Una clase puede tener varios constructores con diferentes
parámetros

public UnaClase() { ... }
public UnaClase(int i) { ... }
public UnaClase(boolean b, int i) { ... }

Si y sólo si no definimos constructor, la clase tendrá el constructor
por defecto (constructor sin parámetros que no hace nada)

public UnaClase() {}

Prácticas de Programación

Tema 2. Clases y objetos en Java

© M. Aldea y M. González

23/02/10

4

Inicialización de los atributos
Cuando se crea un objeto sus atributos se inicializan en 3 etapas:

2.2 Creación e inicialización de objetos

1.Se asigna a cada atributo su valor por defecto

- tipos numéricos (int, double, ...): 0 (o 0.0)
- Caracteres (char): carácter nulo
- Booleanos (boolean): false
- Referencias a objetos (String, otras clases): null

2.Si la declaración del atributo contiene un inicializador, éste es

evaluado y asignado

private int numRuedas = numCoches * 4;

3.Se ejecuta el constructor de la clase, que puede cambiar el

valor de los atributos que desee

Recordar: sólo se inicializan los atributos, las variables
locales de los métodos no son inicializadas por defecto

Prácticas de Programación

Tema 2. Clases y objetos en Java

© M. Aldea y M. González

23/02/10

5

2.2 Creación e inicialización de objetos

Atributos “finales”
Su valor no se puede cambiar después de haber sido inicializados

• pueden inicializarse en la definición del atributo o en el

constructor de la clase

Ejemplo:

public class Círculo {

Inicialización de “PI”

hay un valor más preciso
de PI en la clase Math

private final double PI = 3.14159;
public final double área;
private double radio;

public Círculo(double radio) {
this.radio = radio;
this.área = PI * radio * radio;
}
... // no se puede modificar el valor de área

La inicialización de “área”
se deja para el constructor

Prácticas de Programación

© M. Aldea y M. González

23/02/10

6

Tema 2. Clases y objetos en Java

2.3 Tipos primitivos, referencias y objetos
• Cuando se declarara una variable de un tipo primitivo el

compilador reserva un área de memoria para ella

2.3 Tipos primitivos, referencias y objetos

int i, j;

i

X

j

X

• Cuando se asigna un valor, éste es escrito en el área reservada

i=16;
j=3;

i

16

j

3

• La asignación entre variables significa copiar el contenido de

una variable en la otra

i=j;

i

3

j

3

Prácticas de Programación

Tema 2. Clases y objetos en Java

© M. Aldea y M. González

23/02/10

7

Referencias y objetos
Cuando se declara una variable “objeto” la situación es diferente
• Si no se usa el operador new sólo se crea una referencia a objeto

2.3 Tipos primitivos, referencias y objetos

Complejo c1,c2;

c1 X

c2 X

• El espacio en memoria del objeto se reserva con el operador new

c1=new Complejo(2.0,-3.2);
c2=new Complejo(1.3,2.1);

Prácticas de Programación

Tema 2. Clases y objetos en Java

c1

c2

:Complejo
r=2.0
i=-3.2

:Complejo
r=1.3
i=2.1

© M. Aldea y M. González

23/02/10

8

2.3 Tipos primitivos, referencias y objetos

Referencias y objetos (cont.)

• La asignación entre objetos sólo copia referencias

• después de la copia ambas referencias apuntan al mismo

objeto
c2=c1;

c1

:Complejo
r=2.0
i=-3.2

c2

:Complejo
r=1.3
i=2.1

• La comparación entre objetos compara las referencias no los

contenidos
• en la figura anterior c1==c2 es true
• en la situación de debajo c1==c2 es false

c1

:Complejo
r=2.0
i=1.0

c2

:Complejo
r=2.0
i=1.0

• el método equals permite comparar contenidos (Ver 2.5)

Prácticas de Programación

© M. Aldea y M. González

23/02/10

9

Tema 2. Clases y objetos en Java

2.3 Tipos primitivos, referencias y objetos

Arrays de tipos primitivos
Java trata los arrays como objetos
• Crear una variable de tipo array sólo crea una referencia

int a[];

a

X

• El espacio en memoria para el array se crea con new

• cuando se trata de un array de un tipo primitivo se crean los

elementos del array

• y se inicializan a sus valores por defecto

a = new int[5];

0 0 0 0 0

a

Prácticas de Programación

Tema 2. Clases y objetos en Java

© M. Aldea y M. González

23/02/10

10

Arrays de referencias a objetos
• Crear una variable de tipo array de objetos sólo crea la referencia

2.3 Tipos primitivos, referencias y objetos

Complejo a[];

a

X

• Con new se reserva el espacio para el array de referencias

• pero no los objetos a los que apuntarán las referencias
• las referencias que forman el array se inicializan a null

a=new Complejo[4];

a

null

null null null

• Los objetos hay que crearlos posteriormente

a[1]=new Complejo(2.0,-3.2);

null

null null

a

:Complejo
r=2.0
i=-3.2

© M. Aldea y M. González

23/02/10

11

Prácticas de Programación

Tema 2. Clases y objetos en Java

Copia y comparación de arrays (y strings)
Los arrays y los strings son objetos, por consiguiente:
• La asignación entre arrays (o strings) sólo copia referencias

2.3 Tipos primitivos, referencias y objetos

a2=a1;

a1

4

-3

0

1

-3

-7

8

2

1

a2

• La comparación entre arrays (o strings) compara las referencias

no los contenidos
• en la figura anterior a1==a2 es true
• en la situación de debajo a1==a2 es false

a1

4

-3

0

1

4

-3

0

1

a2

• Para comparar contenidos debe utilizarse el método equals

Prácticas de Programación

© M. Aldea y M. González

23/02/10

12

Tema 2. Clases y objetos en Java

2.4 Recolector de basura

2.4 Recolector de basura

La memoria ocupada por un objeto se reserva con el operador new
• en Java no existe ningún operador para liberar la memoria de

un objeto que no se va a usar más

La liberación de memoria la realiza el Recolector de Basura de
forma automática

• el recolector va contando el número de referencias que

“apuntan” a cada objeto

• cuando un objeto no está apuntado por ninguna referencia, se
convierte en “basura” (no va a poder ser utilizado nunca más)

• en los periodos de inactividad del sistema, el recolector

reincorpora la “basura” a la memoria disponible

Prácticas de Programación

Tema 2. Clases y objetos en Java

© M. Aldea y M. González

23/02/10

13

2.4 Recolector de basura

Ejemplo de generación de basura
Complejo c1 = new Complejo(2.0, 3.2);
Complejo c2 = new Complejo(1.3, 2.1);

c1

:Complejo
r=2.0
i=3.2

c2 = c1;

c1

:Complejo
r=2.0
i=3.2

c2

c2

:Complejo
r=1.3
i=2.1

:Complejo
r=1.3
i=2.1

Se convierte en basura al no estar
apuntado por ninguna referencia

© M. Aldea y M. González

23/02/10

14

Prácticas de Programación

Tema 2. Clases y objetos en Java

2.5 Comparación de objetos
La comparación entre objetos (obj1==obj2) compara referencias
• si queremos comparar los contenidos de los objetos debemos

2.5 Comparación de objetos

utilizar el método equals

Ejemplo: método equals para la clase Coordenada:
public class Coordenada {

private int x; // coordenada en el eje x
private int y; // coordenada en el eje y

...

public boolean equals(Object obj) {

Coordenada c = (Coordenada) obj;
return c.x == x && c.y == y;

}

}

Prácticas de Programación

© M. Aldea y M. González

23/02/10

15

Tema 2. Clases y objetos en Java

Ejemplo de uso del método equals

2.5 Comparación de objetos

if (c1.equals(c1)) {
...
}

if (c1.equals(c4)) {
...
}

if (c1.equals(c2)) {
...
}

if (c1.equals(c3)) {
...
}

Prácticas de Programación

Tema 2. Clases y objetos en Java

true

false

true

c1

c2

:Coordenada
x=2
y=-3

c4

:Coordenada
x=10
y=4

:Coordenada
x=2
y=-3

c3

© M. Aldea y M. González

23/02/10

16

2.5 Comparación de objetos

Comparación de contenidos de arrays y strings
La clase String dispone del método equals:

String str1 = "hola", str2 = "hola";
if (str1.equals(str2)) {

System.out.println("Los strings son iguales");

}

Para comparar arrays existe el método equals de la clase Arrays:
import java.util.Arrays;

int[] a1= {4, -3, 0, 1}, a2= {4, -3, 0, 1};
if (Arrays.equals(a1, a2)) {

System.out.println("'a1' es igual a 'a2'");

}

Volveremos a hablar del método equals en el tema 3, “Herencia y Polimorfismo”

© M. Aldea y M. González

23/02/10

17

Prácticas de Programación

Tema 2. Clases y objetos en Java

2.6 Control de acceso

2.6 Control de acceso
Los sistemas software pueden llegar a ser muy complejos
Para abordar con éxito su desarrollo es necesario aplicar los
  • Links de descarga
http://lwp-l.com/pdf979

Comentarios de: Prácticas de Programación - Tema 2. Clases y objetos en Java (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