Saltar a contenido

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
...... }
Por lo general, las propiedades de una clase suelen ser privadas o protegidas, a no ser que se trate de un valor constante, en cuyo caso se declararán como públicos.

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 tipo double y como métodos parar al cual no se le pasan argumentos y girar 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 tipo String, y tipo de interés y saldo de tipo double. Por otro lado, tiene el método ingreso al que se le pasa un valor tipo double 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 atributos ruedas (con modificador packageprivate), velocidad (de tipo double y accesible solo desde clase Coche), nombre (con acceso desde cualquier clase), y direcció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 tipo double y no devolverá ningún valor), frenar (que requiere también un double como parámetro de entrada y tampoco devuelve nada) y obtenerVelocidad (sin parámetros y devolverá una variable de tipo double). 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étodo main y una clase Empleado 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étodo identificacion que devolverá el dni, el método entrada que devolverá la hora de entrada y el método salida que devolverá la hora de salida.
    • En la clase EmpleadoMain se debe construir o instanciar un objeto emp1 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.

  • 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 tipo String y accesible desde cualquier clase dentro de su paquete y por cualquier subclase independientemente del paquete). Los métodos de esta clase son correr (el cual requerirá de una variable tipo double y no devolverá ningún valor) y saltar (sin parámetros de entrada y que devuelve un double 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étodo main.
    • 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étodo almacenado que devolverá la cantidad de pares disponibles de ese tipo y el método precioVenta que devolverá el precio de un par concreto.
    • En la clase ZapatoMain se debe construir o instanciar un objeto par1 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.

  • 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étodo main, como la clase Alumno 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.