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
Noria
que tenga como atributo radio de tipodouble
y como métodosparar
al cual no se le pasan argumentos ygirar
al 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
main
realizar la simulación y comprobación que consideréis. -
AC 602 (RA2/ CE2c CE2g CE2h/ IC1 / 3p). Genera una clase
Cuenta
que 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étodoingreso
al que se le pasa un valor tipodouble
y 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
main
realizar la simulación y comprobación que consideréis. -
AR 603 (RA2/ CE2c CE2g CE2h/ IC1 / 3p). Genera una clase
Coche
que 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 tipodouble
y no devolverá ningún valor),frenar
(que requiere también undouble
como 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.obtenerVelocidad
será 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
main
realizar 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
EmpleadoMain
que contendrá el métodomain
y una claseEmpleado
con 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
Empleado
tiene además todos sus métodos públicos: el métodoidentificacion
que devolverá el dni, el métodoentrada
que devolverá la hora de entrada y el métodosalida
que devolverá la hora de salida. - En la clase
EmpleadoMain
se debe construir o instanciar un objetoemp1
con 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
emp2
con 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
main
realizar la simulación y comprobación que consideréis. - Constará de una clase
-
AC 605 (RA2/ CE2c CE2g CE2h/ IC1 / 3p). Genera una clase
Gato
que 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 tipoString
y 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 tipodouble
y no devolverá ningún valor) ysaltar
(sin parámetros de entrada y que devuelve undouble
con 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
mod1
con los siguientes atributos:- nombre: "Bases de Datos", código: "0484", curso: 1 y horas: 160.
- También se debe instanciar un nuevo objeto
mod2
sin 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
ZapatoMain
en un fichero .java que contendrá el métodomain
. - Una clase
Zapato
en 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
Zapato
tiene además todos sus métodos públicos: el métodoalmacenado
que devolverá la cantidad de pares disponibles de ese tipo y el métodoprecioVenta
que devolverá el precio de un par concreto. - En la clase
ZapatoMain
se debe construir o instanciar un objetopar1
con los siguientes atributos:- tipo: "Náutico", color: "Azul", número: 42, liquidación: false, cantidad: 10 y precio: 40,
- Otro objeto
par2
con 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
main
donde 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
AlumnoMain
con el métodomain
, como la claseAlumno
cuyos 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
main
donde pruebes todos los métodos. Recuerda que siempre que se puedan pedir datos por teclado, se han de pedir. - Crea tanto la clase