Saltar la navegación

Anexo I.- Proceso de implementación de la clase DNI.

Ejercicio resuelto

Vamos a intentar implementar una clase que incluya todo lo que has visto hasta ahora. Se desea crear una clase que represente un DNI español y que tenga las siguientes características:

  • La clase almacenará el número de DNI en un int, sin guardar la letra, pues se puede calcular a partir del número. Este atributo será privado a la clase. Formato del atributo: private int numDNI.
  • Para acceder al DNI se dispondrá de dos métodos obtener (get), uno que proporcionará el número de DNI (sólo las cifras numéricas) y otro que devolverá el NIF completo (incluida la letra). El formato del método será:
    
    
        public int obtenerDNI ().
    
        public String obtenerNIF ().
  • Para modificar el DNI se dispondrá de dos métodos establecer (set), que permitirán modificar el DNI. Uno en el que habrá que proporcionar el NIF completo (número y letra). Y otro en el que únicamente será necesario proporcionar el DNI (las siete u ocho cifras). Si el DNI/NIF es incorrecto se debería lanzar algún tipo de excepción. El formato de los métodos (sobrecargados) será:
    
    
       public void establecer (String nif) throws ...
    
        public void establecer (int dni) throws ...
  • La clase dispondrá de algunos de métodos internos privados para calcular la letra de un número de DNI cualquiera, para comprobar si un DNI con su letra es válido, para extraer la letra de un NIF, etc. Aquellos métodos que no utilicen ninguna variable de objeto podrían declararse como estáticos (pertenecientes a la clase). Formato de los métodos:
    
    
       private static char calcularLetraNIF (int dni).
    
        private boolean validarNIF (String nif).
    
        private static char extraerLetraNIF (String nif).
    
        private static int extraerNumeroNIF (String nif).