Академический Документы
Профессиональный Документы
Культура Документы
y Objetos en Java
Alumno al;
Acceso a atributos
• Se hace a partir de una referencia a la clase, seguida de un
punto y el nombre del atributo:
Acceso a métodos
• Se hace a partir de una referencia a la clase, seguida de un punto y el
nombre del método, pasando entre paréntesis los parámetros que
requiera (o dejando paréntesis vacíos si no hay parámetros) :
Constructores (I)
• Son un código que se ejecuta cada vez que se instancia un nuevo objeto,
sobre los atributos de este mismo objeto.
• Se definen mediante el nombre de la clase, seguida de paréntesis y,
opcionalmente, una lista de parámetros.
– Un constructor sin parámetros suele usarse para dar unos valores por defecto
a sus atributos.
public class Alumno {
String nombre, email;
int edad;
Alumno() {
nombre = “no especificado”;
edad = -1;
email = “no especificado”;
}
Constructores (III)
• Los Constructores con parámetros nos permiten
ahorrar espacio y evitan que tengamos que repetir
ciertas operaciones asociadas al proceso de creación
del objeto.
Referencia “this”
• Todos los objetos tienen una referencia llamada “this”, que apunta
al propio objeto.
• Esta referencia solo se puede usar en el código que hay dentro del
mismo objeto (visibilidad privada).
• Entre otras cosas, se usa para distinguir los atributos de los
parámetros o las variables locales.
class Alumno {
String nombre;
Alumno(String nombre) {
// Asigna al atributo nombre (referenciado
// mediante this) el valor del parámetro
// nombre
this.nombre = nombre;
}
• El uso de this no es obligatorio cuando no hay conflicto de nombres.
Ejemplo: clase Complex
public class Complex {
float r,i;
// Constructor por defecto.
// Uso: new Complex();
Complex() {
r = 0; i = 0;
}
// Constructor por parámetros.
// Uso: new Complex(1.0,2.5);
Complex(float r, float i) {
/* con «this» diferenciamos el atributo r de cualquier
atributo o variable local con el mismo nombre */
this.r = r;
this.i = i;
}
Errores comunes
Complex a,b,c;
c = a.add(b);
ERROR: las referencias a y b están definidas, pero no apuntan a ningún objeto.
a = new Complex(1,1);
b = new Complex(1,2);
c = a + b;
ERROR: Java solo "entiende" qué hacer con el operador suma para los tipos
básicos y las Strings (concatenación).
a = b;
ALERTA! a no copia el valor de b, sino que apunta al mismo complex.
if(a == b) { ... }
ALERTA! la condición no será cierta si a y b tienen los mismos valores.
Solamente será cierta cuando la referencia a y b apunten al mismo objeto.
Ejercicios
1. Crear una clase llamada EcuacionLineal, que
permita especificar y resolver ecuaciones del
tipo Ax+B=0
– Qué atributos debe definir?
– Qué métodos?
– Algún constructor?
– Si queremos mostrarla por pantalla
(System.out.println()), qué debemos hacer?
Ejercicios
2. Diseñar un reloj despertador.
– En todo momento guarda la hora, minuto y
segundo actual, como la hora, minuto y segundo
en que debe “sonar” la alarma.
– La alarma puede activarse o desactivarse.
– Hay un método llamado “tickSegundo” que
“alguien” llamará (no debemos preocuparnos de
qué clase lo hace).
• Actualiza los segundos, minutos y hora.
• Comprueba si la hora coincide con la hora de la
alarma. Y, si la alarma está activada, saca por pantalla
el mensaje “Riiing!” (System.out.println)