Encapsulación: clases y
objetos
Java y Servicios Web I
Master en Ingeniería Matemática
Manuel Montenegro
Dpto. Sistemas Informáticos y Computación
Desp. 467 (Mat)
[email protected]
Contenidos
● Clases y objetos. Atributos.
● Métodos.
● Modificadores de acceso (public/private)
● Constructores.
● Igualdad de objetos.
● Ejemplos.
● Atributos y métodos estáticos.
● Paquetes.
11/Mayo/2012
3. Encapsulación: Clases y objetos
2
Clases
● Una clase es un tipo, definido mediante
atributos y métodos.
● Los atributos son variables que definen el
estado interno de los objetos de la clase.
● Los métodos son funciones/procedimientos
que acceden y/o modifican los atributos de un
objeto.
● Conceptualmente, representan mensajes
destinados a un objeto.
11/Mayo/2012
3. Encapsulación: Clases y objetos
3
Atributos de una clase
// Fecha.java
public class Fecha {
public int dia;
public int mes;
public int año;
}
Tipo
Nombre
Atributos
11/Mayo/2012
3. Encapsulación: Clases y objetos
4
Clases vs. Objetos
● Desde el punto de vista del compilador, las clases son
tipos, y los objetos son variables con esos tipos.
● Un objeto es una asignación de los atributos definidos
por la clase a valores concretos.
● Una clase puede considerarse como una plantilla, a partir
de la cual se crean objetos, que son instancias de la clase.
Clase Fecha
int dia;
int mes;
int año;
dia = 11
mes = 5
año = 2012
dia = 28
mes = 8
año = 1983
Objetos de
la clase Fecha
11/Mayo/2012
3. Encapsulación: Clases y objetos
5
Creación de objetos
// Test.java
public class Test {
public static void main(String[] args) {
Fecha f;
f = new Fecha();
f.dia = 12;
f.mes = 5;
f.año = 2012;
System.out.printf(“Hoy es día: %d/%d/%d”,
f.dia, f.mes, f.año);
}
}
Creación de un objeto
Modificación de atributos
Acceso a atributos
11/Mayo/2012
3. Encapsulación: Clases y objetos
6
Creación de objetos
// Test.java
public class Test {
public static void main(String[] args) {
Fecha f;
f = new Fecha();
f.dia = 12;
f.mes = 5;
f.año = 2012;
System.out.printf(“Hoy es día: %d/%d/%d”,
f.dia, f.mes, f.año);
}
}
Creación de un objeto
Modificación de atributos
Acceso a atributos
Fecha f = new Fecha();
11/Mayo/2012
3. Encapsulación: Clases y objetos
7
Contenidos
● Clases y objetos. Atributos.
● Métodos.
● Modificadores de acceso (public/private)
● Constructores.
● Igualdad de objetos.
● Ejemplos.
● Atributos y métodos estáticos.
● Paquetes.
11/Mayo/2012
3. Encapsulación: Clases y objetos
8
Métodos de una clase
● Son funciones que se declaran dentro del
cuerpo de la clase.
// Fecha.java
public class Fecha {
public int dia;
public int mes;
public int año;
public void imprimir() {
System.out.printf(“%d/%d/%d”, dia, mes, año);
}
}
11/Mayo/2012
3. Encapsulación: Clases y objetos
9
Llamada a métodos
// Test.java
public class Test {
public static void main(String[] args) {
Fecha f;
f = new Fecha();
f.dia = 12;
f.mes = 5;
f.año = 2012;
System.out.print(“Hoy es día: ”);
f.imprimir();
}
}
Llamada a método
11/Mayo/2012
3. Encapsulación: Clases y objetos
10
Métodos de acceso (getters)
● En general, no conviene que el usuario de la clase
maneje directamente los atributos de la misma.
type Fecha = record
// número de días transcurridos desde el
// 1 de enero de 1970
numeroDias:integer;
end;
function DiferenciaFechas(f1, f2:Fecha):integer;
begin
return f2.numeroDias – f1.numeroDias;
end;
var actual, f: fecha;
write(f.dia, '/', f.mes, '/', f.año)
if f.año < … then
diff := DiferenciaFechas(actual, f);
end;
case f.mes of
…
end;
11/Mayo/2012
3. Encapsulación: Clases y objetos
11
Métodos de acceso (getters)
// Fecha.java
public class Fecha {
…
public int getDia() {
return dia;
}
public int getMes() {
return mes;
}
public int getAño() {
return año;
}
}
11/Mayo/2012
3. Encapsulación: Clases y objetos
12
Métodos de modificación (setters)
// Fecha.java
public class Fecha {
…
public void setDia(int nuevoDia) {
dia = nuevoDia;
}
public void setMes(int nuevoMes) {
mes = nuevoMes;
}
public void setAño(int nuevoAño) {
año = nuevoAño;
}
}
11/Mayo/2012
3. Encapsulación: Clases y objetos
13
Métodos de modificación (setters)
// Test.java
public class Test {
public static void main(String[] args) {
Fecha f;
f = new Fecha();
f.setDia(12);
f.setMes(5);
f.setAño(2012);
System.out.print(“Hoy es día: ”);
f.imprimir();
}
}
Ventaja adicional: permite comprobación de errores.
11/Mayo/2012
3. Encapsulación: Clases y objetos
14
Contenidos
● Clases y objetos. Atributos.
● Métodos.
● Modificadores de acceso (public/private)
● Constructores.
● Igualdad de objetos.
● Ejemplos.
● Atributos y métodos estáticos.
● Paquetes.
11/Mayo/2012
3. Encapsulación: Clases y objetos
15
Modificadores de acceso
● ¡Pero esto no impide que el usuario de la clase
pueda acceder a los atributos directamente!
Fecha f;
f = new Fecha();
f.dia = 12;
f.setMes(5);
● ¿Hay alguna manera de prohibir explícitamente
el acceso a un atributo o método?
11/Mayo/2012
3. Encapsulación: Clases y objetos
16
Modificadores de acceso
● public : Puede accederse desde fuera de la
clase.
● private: Sólo es visible desde los métodos de
la clase.
● Los atributos y métodos privados se consideran de
uso interno por la clase.
public class Fecha {
private int dia;
private int mes;
private int año;
…
}
11/Mayo/2012
3. Encapsulación: Clases y objetos
17
Modificadores de acceso
● public : Puede accederse desde fuera de la
clase.
● private: Sólo es visible desde los métodos de
la clase.
● Los atributos y métodos privados se consideran de
uso interno por la clase.
public class Fecha {
private int dia;
private int mes;
private int año;
…
}Modificadores de acceso
Puede ser public, private, o protected
11/Mayo/2012
3. Encapsulación: Clases y objetos
18
Contenidos
● Clases y objetos. Atributos.
● Métodos.
● Modificadores de acceso (public/private)
● Constructores.
● Igualdad de objetos.
● Ejemplos.
● Atributos y métodos estáticos.
● Paquetes.
11/Mayo/2012
3. Encapsulación: Clases y objetos
19
Constructores
● Son métodos que sirven para inicializar un
objeto.
● Se caracterizan por llamarse igual que el
nombre de la clase, y no tener tipo de retorno.
// Fecha.java
public class Fecha {
…
public Fecha(int nuevoDia, int nuevoMes, int nuevoAño) {
dia = nuevoDia;
mes = nuevoMes;
año = nuevoAño;
}
}
11/Mayo/2012
3. Encapsulación: Clases y objetos
20
Constructores
● Los constructores son llamados durante la
creación del objeto.
// Test.java
public class Test {
public static void main(String[] args) {
Fecha f;
f = new Fecha(12, 5, 2012);
System.out.print(“Hoy es día: ”);
f.imprimir();
}
}
Parámetros del constructor
11/Mayo/2012
3. Encapsulación: Clases y objetos
21
Constructores
● Si una clase no tiene constructor, el
compilador añade un constructor por defecto
sin parámetros.
● Inicializa todos los atributos a sus valores por
defecto.
Fecha f = new Fecha();
Constructor por defecto
● Cuando se define un constructor en una clase,
el constructor por defecto no se añade.
Fecha f = new Fecha();
ERROR
11/Mayo/2012
3. Encapsulación: Clases y objetos
22
Manejo interactivo de objetos en BlueJ
11/Mayo/2012
3. Encapsulación: Clases y objetos
23
Contenidos
● Clases y objetos. Atributos.
● Métodos.
● Modificadores de acceso (public/private)
● Constructores.
● Igualdad de objetos.
● Ejemplos.
● Atributos y métodos estáticos.
● Paquetes.
11/Mayo/2012
3. Encapsulación: Clases y objetos
24
Igualdad de objetos
● Los objetos se almacenan en el heap.
● Las variables son referencias a esos objetos.
Fecha f1 = new Fecha(11, 5, 2012);
Fecha f2 = f1;
f1
f2
dia = 11
mes = 5
año = 2012
● La igualdad entre dos variables de tipo objeto
(==) es cierta sólo si apuntan al mismo objeto.
11/Mayo/2012
3. Encapsulación: Clases y objetos
25
Igualdad de objetos
● Si se quiere implementar otro tipo de
igualdad, ha de hacerse mediante un método
de la clase.
// Fecha.java
public class Fecha {
…
public boolean igualA(Fecha otraFecha) {
return (dia == otraFecha.dia) &&
(mes == otraFecha.mes) &&
(año == otraFecha.año);
}
}
11/Mayo/2012
3. Encapsulación: Clases y objetos
26
Igualdad de objetos
● Si se quiere implementar otro tipo de
igualdad, ha de hacerse mediante un método
de la clase.
// Test.java
…
f1 = new Fecha(14, 2, 2000);
f2 = new Fecha(14, 2, 2000);
if (f1.igualA(f2)) {
System.out.println(“Son iguales”);
}
11/Mayo/2012
3. Encapsulación: Clases y objetos
27
Contenidos
● Clases y objetos. Atributos.
● Métodos.
● Modificadores de acceso (public/private)
● Constructores.
● Igualdad de objetos.
● Ejemplos.
● Atributos y métodos estáticos.
● Paquetes.
11/Mayo/2012
3. Encapsulación: Clases y objetos
28
Ejemplo: clase Punto
public class Punto
{
private int x;
private int y;
public Punto(int x, int y) {
this.x = x;
this.y = y;
}
public int getX() { return x; }
public int getY() { return y; }
}
11/Mayo/2012
3. Encapsulación: Clases y objetos
29
Ejemplo: clase Punto
public class Punto
{
private int x;
private int y;
public Punto(int x, int y) {
this.x = x;
this.y = y;
}
public int getX() { return this.x; }
public int getY() { return this.y; }
Atributos de la clase
this = objeto que está siendo construido
}
this = objeto que recibe el mensaje
11/Mayo/2012
3. Encapsulación: Clases y objetos
30
Ejemplo: clase Rectangulo
public class Rectangulo
{
private Punto posición; // Posición de la esquina sup
Comentarios de: Encapsulación: clases y objetos - Java y Servicios Web I - Master en Ingeniería Matemática (0)
No hay comentarios