Creación de clases¶
Cuando se definen los datos de una determinada clase, se debe indicar el tipo de propiedad o atributo que es (String, int, double, char, ...) y el especificador de acceso (public, private, ...).
class Persona {
public String nombre; //Se puede acceder desde cualquier clase
private int contrasenya; //Solo se puede acceder desde la clase Persona
protected String direccion; //A esta propiedad acceden tanto esta clase como sus descendientes
...... }
Definición de métodos de clase¶
Un método es una llamada a una operación de un determinado objeto. Al realizar esta llamada (también se le llama enviar un mensaje), el control del programa pasa a ese método y lo mantendrá hasta que el método finalice o se haga uso de return.
Para que un método pueda trabajar, normalmente hay que pasarle unos datos en forma de argumentos o parámetros, cada uno de los cuales se separa por comas. Al definir el método hay que indicar qué argumento se necesitan y de qué tipo son.
balon.botar(); //sin argumentos
miCoche.acelerar(10);
ficha.comer(posicion15);
partida.empezarPartida("18:15",colores);
Los métodos de la clase se definen dentro de ella. Hay que indicar un modificador de acceso (public, private, protected o ninguno, al igual que ocurre con las variables y con la propia clase) y un tipo de datos, que indica qué tipo de valores devuelve el método.
Esto último se debe a que los métodos son funciones que pueden devolver un determinado valor (un entero, una cadena de texto, un valor lógico, ...) mediante el comando return. Si el método no devuelve ningún valor, entonces se utiliza el tipo void que significa que no devuelve valores (en ese caso el método no tendrá instrucción return).
public class Coche {
int ruedas;
private double velocidad; // por defecto vale 0
String nombre;
protected String direccion;
/* Aumenta la velocidad*/
public void acelerar(double cantidad) {
velocidad += cantidad; // velocidad = velocidad + cantidad
}
/* Disminuye la velocidad*/
public void frenar(double cantidad) {
velocidad -= cantidad; // velocidad = velocidad - cantidad
}
/* Devuelve la velocidad*/
public double obtenerVelocidad(){
return velocidad;
}
public static void main(String[] args){
Coche miCoche = new Coche();
miCoche.acelerar(12);
miCoche.frenar(5);
System.out.println(miCoche.obtenerVelocidad()); //Da 7.0
}
}
Actividades¶
-
AC 601 (RA2/ CE2c CE2g CE2h/ IC1 / 3p). Genera una clase
Noriaque tenga como atributo radio de tipodoubley como métodospararal cual no se le pasan argumentos ygiraral que se le pasa una variable de tipo entero. Todos los miembros de la clase pueden ser accedidos desde clases que se encuentren en su mismo paquete. Si la noria está parada el método parar devolverá “La noria está parada”, de lo contrario mostrará “Iniciando frenado” hacer un delay de 1000ms y mostrar “Parada”.Podéis añadir tantos atributos a la clase como consideréis. En el
mainrealizar la simulación y comprobación que consideréis. -
AC 602 (RA2/ CE2c CE2g CE2h/ IC1 / 3p). Genera una clase
Cuentaque tenga como atributos nombre y número de cuenta de tipoString, y tipo de interés y saldo de tipodouble. Por otro lado, tiene el métodoingresoal que se le pasa un valor tipodoubley devolverá un mensaje en función de una comprobación: que se ingresen mínimo 99,99 y máximo 999,99. Además deberá tener otro método que nos muestre el saldo de la cuenta. Ningún miembro de la clase puede ser accedido desde fuera de esta.Podéis añadir tantos atributos a la clase como consideréis. En el
mainrealizar la simulación y comprobación que consideréis. -
AR 603 (RA2/ CE2c CE2g CE2h/ IC1 / 3p). Genera una clase
Cocheque tenga como atributosruedas(con modificador packageprivate),velocidad(de tipo double y accesible solo desde claseCoche),nombre(con acceso desde cualquier clase), ydirección(accesible desde cualquier clase dentro de su paquete y por cualquier subclase independientemente del paquete).Los métodos de esta clase son
acelerar(el cual requerirá de una variable tipodoubley no devolverá ningún valor),frenar(que requiere también undoublecomo parámetro de entrada y tampoco devuelve nada) yobtenerVelocidad(sin parámetros y devolverá una variable de tipodouble). Los tres métodos pueden ser accedidos desde cualquier clase.obtenerVelocidadserá la que nos muestre la velocidad. No puede haber velocidades negativas.Podéis añadir tantos atributos a la clase como consideréis. En el
mainrealizar la simulación y comprobación que consideréis. -
AC 604 (RA2/ CE2c CE2g CE2h/ IC1 / 3p). Desarrolla un programa que sirva para tener registrada la entrada y salida de empleados en la sede de una empresa.
- Constará de una clase
EmpleadoMainque contendrá el métodomainy una claseEmpleadocon los atributos nombre (de empleado), departamento y sala accesibles desde cualquier clase, y también los atributos dni, hora_ent (hora entrada) y hora_sal (hora salida) que serán privados. - La clase
Empleadotiene además todos sus métodos públicos: el métodoidentificacionque devolverá el dni, el métodoentradaque devolverá la hora de entrada y el métodosalidaque devolverá la hora de salida. - En la clase
EmpleadoMainse debe construir o instanciar un objetoemp1con los siguientes atributos:- nombre: “Antonio López”, departamento: "Investigación", sala: ‘A’, dni: “12345678A”, hora_ent: 9 y hora_sal: 15.
- También en la clase principal se debe instanciar un nuevo objeto
emp2con los atributos:- nombre: “María Ruiz”, departamento: "Desarrollo", sala: ‘C’, dni: “23456781B”, hora_ent: 15 y hora_sal: 21.
- Finalmente el programa debe imprimir los atributos de los objetos por pantalla.
Podéis añadir tantos atributos a la clase como consideréis. En el
mainrealizar la simulación y comprobación que consideréis. - Constará de una clase
-
AC 605 (RA2/ CE2c CE2g CE2h/ IC1 / 3p). Genera una clase
Gatoque tenga como atributos edad (de tipo entero y sin modificador), peso (de tipo double y accesible solo desde clase Gato), nombre (con acceso desde cualquier clase), y raza (de tipoStringy accesible desde cualquier clase dentro de su paquete y por cualquier subclase independientemente del paquete). Los métodos de esta clase soncorrer(el cual requerirá de una variable tipodoubley no devolverá ningún valor) ysaltar(sin parámetros de entrada y que devuelve undoublecon la altura alcanzada). Ningún método de la clase puede ser accedido desde fuera de esta.Podéis añadir tantos atributos a la clase como consideréis. En el main realizar la simulación y comprobación que consideréis.
-
AC 606 (RA2/ CE2c CE2g CE2h/ IC1 / 3p). Escribe un programa que disponga de una clase para representar los módulos de un ciclo superior.
- Un módulo tiene un nombre, un código de 4 dígitos, el número del curso en el cual se imparte y el número de horas. Los valores iniciales de estos atributos han de proporcionarse en un constructor parametrizado.
- Se debe construir o instanciar un objeto
mod1con los siguientes atributos:- nombre: "Bases de Datos", código: "0484", curso: 1 y horas: 160.
- También se debe instanciar un nuevo objeto
mod2sin indicar atributos. Estos deben ser introducidos después:- nombre: "Programación", código: "0485", curso: 1 y horas: 192.
- Para ello la clase ha de tener métodos para escribir (set) los valores de los atributos.
- Finalmente, el programa debe imprimir los atributos de los objetos por pantalla.
-
PR 607 (RA2/ CE2c CE2g CE2h/ IC2 / 5p). Escribe un programa que sirva para tener registradas las ventas de zapatos en una zapatería. Se requiere:
- Una clase
ZapatoMainen un fichero .java que contendrá el métodomain. - Una clase
Zapatoen otro fichero .java distinto, con los atributos tipo, color, número y liquidación de acceso público, y los atributos cantidad (pares de ese tipo almacenados) y precio, ambos de acceso privado. - La clase
Zapatotiene además todos sus métodos públicos: el métodoalmacenadoque devolverá la cantidad de pares disponibles de ese tipo y el métodoprecioVentaque devolverá el precio de un par concreto. - En la clase
ZapatoMainse debe construir o instanciar un objetopar1con los siguientes atributos:- tipo: "Náutico", color: "Azul", número: 42, liquidación: false, cantidad: 10 y precio: 40,
- Otro objeto
par2con los atributos:- nombre: "De salón", color: "Rojo", número: 38, liquidación: true, cantidad: 3 y precio: 25.
- Finalmente, el programa debe imprimir los atributos de los objetos por pantalla.
Genera un método
maindonde pruebes todos los métodos. Recuerda que siempre que se puedan pedir datos por teclado, se han de pedir. - Una clase
-
PR 608 (RA2/ CE2c CE2g CE2h/ IC2 / 5p). Se necesita crear un programa que solicite, almacene y presente información sobre los alumnos de un Instituto. Para ello:
- Crea tanto la clase
AlumnoMaincon el métodomain, como la claseAlumnocuyos atributos serán privados. Ambas clases deben estar en ficheros diferentes. - La información que interesa almacenar de cada estudiante es el nombre del alumno, su NIA (ej: “123”), el nombre del ciclo y su curso.
- El programa deberá solicitar al usuario la inserción de los datos de al menos 2 alumnos, y al finalizar deberá mostrarlos por pantalla.
Genera un método
maindonde pruebes todos los métodos. Recuerda que siempre que se puedan pedir datos por teclado, se han de pedir. - Crea tanto la clase