Programming

T05-001-05 Modificadores.

Enunciado

Otros modificadores.

En un apartado anterior ya hablamos del modificador static, así que en este apartado nos centraremos en otros dos modificadores.

Modificadores de acceso en la declaración de las clases:

  • final: Las propiedades o métodos definidos como final no pueden ser modificados o sobreescritos. En el caso de que el modificador final se aplique a una clase, significará que dicha clase no puede ser heredada por otras clases, aunque este concepto lo abordaremos más adelante.
  • abstract: Solo se aplica a métodos o clases y están asociados a la herencia, por lo que también lo abordaremos más adelante.

Ejemplo:

    public class OOP_ejemplos {

        public static void main(String[] args) {
            SubClase miObj1 = new SubClase(8);
            miObj1.y = 7; // devolvería error de compilación
            System.out.println(miObj1.suma()); // suma(9, 7) devolvería error de compilación
        }

    }

    class SubClase {

        private int x;
        final int y = 10;

        public SubClase(int _x) {
            x = _x;
        }

        public int suma() {
            return x + y;
        }

        private int suma(int _x, int _y) {
            return _x + _y;
        }
    }

En el código anterior, podemos observar que:

  • El valor de la propiedad y se le asigna en el momento de la declaración
  • Si, posteriormente se intentara modificar el valor de esa constante, se generaría un error de compilación.

Ejercicio:

Partiendo del código que soluciona el último ejercicio del apartado de constructores, convierte el método estático calificacionMaxima() en una propiedad constante, sin que deje de ser static.

Recuerda: el modificador static significaba que la propiedad o método pertenecía a la clase y no era necesario acceder a él a través de un objeto de la clase, sino que se hacía desde la propia clase.

Nota: las constantes se suelen escribir con todas su letras en mayúsculas.

Nota: Elimina también los comentarios del código.

Solución


											
package oop; import java.util.Scanner; public class OOP { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String nombre; int nota; Modulo miModulo; for (int i = 0; i < 3; i++) { System.out.println("Escriba el nombre del modulo: "); nombre = sc.nextLine(); if (nombre.length() > 0) { do { System.out.println("Escriba la nota del modulo: "); nota = Integer.parseInt(sc.nextLine()); } while (nota > Modulo.CALIFICACION_MAXIMA); miModulo = new Modulo(nota, nombre); } else { miModulo = new Modulo(); } System.out.println("Nombre del modulo: " + miModulo.nombre); System.out.println("Nota: " + miModulo.nota); System.out.println("Calificacion textual: " + miModulo.calificacion()); } } } class Modulo { final static int CALIFICACION_MAXIMA = 10; int nota; String nombre; public Modulo() { nota = 8; nombre = "Programacion"; } public Modulo(int _nota, String _nombre) { this.nota = _nota; this.nombre = _nombre; } public String calificacion() { String notaTextual; switch (nota) { case 0: case 1: notaTextual = "Muy deficiente"; break; case 2: case 3: case 4: notaTextual = "Insuficiente"; break; case 5: notaTextual = "Suficiente"; break; case 6: notaTextual = "Bien"; break; case 7: case 8: notaTextual = "Notable"; break; case 9: case 10: notaTextual = "Sobresaliente"; break; default: notaTextual = "Fuera de rango"; } return notaTextual; } }

Input

Bases de Datos 13 7 Sistemas 12 5
Sistemas 12 5 Bases de Datos 13 7

Output

Escriba el nombre del modulo: Escriba la nota del modulo: Escriba la nota del modulo: Nombre del modulo: Bases de Datos Nota: 7 Calificacion textual: Notable Escriba el nombre del modulo: Nombre del modulo: Programacion Nota: 8 Calificacion textual: Notable Escriba el nombre del modulo: Escriba la nota del modulo: Escriba la nota del modulo: Nombre del modulo: Sistemas Nota: 5 Calificacion textual: Suficiente
Escriba el nombre del modulo: Escriba la nota del modulo: Escriba la nota del modulo: Nombre del modulo: Sistemas Nota: 5 Calificacion textual: Suficiente Escriba el nombre del modulo: Escriba la nota del modulo: Escriba la nota del modulo: Nombre del modulo: Bases de Datos Nota: 7 Calificacion textual: Notable Escriba el nombre del modulo: