Clase "Relojeria"

Ésta clase sera la encargada de poder realizar las operaciones con los objetos de tipo Reloj, es decir las altas, Bajas, consultas y modificaciones de relojes.

 

 

La forma en que se trabajara sera mediante un vector de tipo “Reloj”, al cual se guardaran los objetos tipo Reloj. Hay que tomar en cuenta que los registros se borraran una vez que se finalice el programa, ya que los arreglos se guardan en la memoria RAM.

Creando la clase “Relojeria”

 

La clase “Relojeria” debe llevar un control estricto sobre las operaciones que debe realizar, para las operaciones que vamos a realizar utilizaremos 3 variables globales (atributos). Primeramente el vector de tipo “Reloj” en donde se almacenaran todos los relojes que el usuario quiera, otra variable que indique el tamaño máximo de relojes a guardar y una última variable para saber el número de registros en nuestro vector.

       private Reloj []vecReloj;
        private int tamano;
        private int cr;

 

En esta clase no es necesario generar getters y setters, pero si un constructor para iniciar los atributos anteriores.

       public Relojeria(int tamano){
                cr=0;
                this.tamano=tamano;
                vecReloj=new Reloj[tamano];     
        }

 

Ahora comenzamos con los métodos que realizaran las operaciones.

Alta de relojes

       public void registrarReloj(Reloj reloj){
                vecReloj[cr]=reloj;
                cr++;
        }

El método registrarReloj recibe como parámetro un objeto de tipo “Reloj” que es el que se guardara en el vector, una vez guardado incrementamos el contador que es el que lleva el conteo de registros.

 

 

Se observa que en el vector se guarda todo un objeto de tipo “Reloj” con los atributos y métodos declarados en su clase, de la misma manera cualquier arreglo puede guardar datos de cualquier tipo definidos en java.

Total de relojes

 

Es posible que se necesite un método que nos retorne el total de registros guardados en nuestro vector, para ello hacemos el siguiente método.

       public int totalReloj(){
                return cr;
        }

Simplemente retornamos la variable “cr” que es la que lleva el conteo de registros.

 

 

Nota: No podemos retornar “vecReloj.length” ya que vecReloj tiene una longitud definida por el usuario (Al crearlo en el constructor) y eso no indica el número de registros en nuestro vector, sino el número de espacios reservados para guardar relojes.

Existe reloj

 

En nuestro sistema vamos a utilizar en diversas ocasiones un método que nos diga si el reloj existe registrado en el vector, para ello creamos un método llamado existe.

       public boolean existe(String claveReloj){
                int i;
                for(i=0;(i<cr)&&(!claveReloj.equals(vecReloj[i].getClaveReloj()));i++){ 
                        
                }
                if(i==cr)
                        return false;
                else
                        return true;
        }

El método nos pide un parámetro que es la clave del reloj el cual sera el medio por el cual se buscara si el reloj realmente existe en el vector. El método funciona con un simple ciclo for que va rrecoriendo todos los registros que tenemos dados de alta, el ciclo for contiene dos condiciones, la primera (i<cr) para recorrer sólo los registros dados de alta y la segunda es una comparación de claves para saber si existe registrada esa clave en el vector.

 

 

Al final se compara con un if, si i es igual a cr significa que recorrió todos los registros y no se encontró la clave, osea no existe el reloj, caso contrario i es menor que cr, por lo tanto el reloj si existe.

Posición del reloj

Conocer la posición de un reloj en un vector será importante para nuestro programa ya que nos permitirá manipular ese objeto en específico, ya sea para darlo de baja, consultarlo o modificarlo.

 

 

De la misma manera que el método existe podemos agregar un método que nos retorna la posición del reloj en el vector, la única modificación es que en lugar de retornar un booleano, retornaremos un entero, la posición en i.

       public int posicion(String claveReloj){
                int i;
                for(i=0;(i<cr)&&(!claveReloj.equals(vecReloj[i].getClaveReloj()));i++){
                }
                if(i==cr)
                        return i;
                else
                        return i;
        }

Baja de un reloj

 

Para dar la baja de un reloj necesitamos conocer la posición del reloj, una vez conocida la posición hacemos un corrimiento de datos, es decir de la posicion del reloj todos los elementos que se encuentran a la derecha pasan a tomar una posición anterior, de ese modo el objeto que desea ser eliminado desaparece de el vector. Al final se decrementa en 1 a nuestro contador de registros.

       public void bajasReloj(int posicion){
                for(int i=posicion;i<(cr-1);i++){
                        vecReloj[i]=vecReloj[i+1];
                }
                cr--;
        }

Obtener reloj

 

El método obtener reloj es muy sencillo, simplemente retorna un objeto “Reloj” indicando su posición en el vector.

        public Reloj obtenerReloj(int posicion){
                return vecReloj[posicion];
        }

Modificar reloj

 

El método modificar reloj también es muy sencillo, simplemente se pasa como parámetro un objeto reloj y la posición donde se guardará para sustituir el reloj que se aloja en esa posición.

       public void modificarReloj(Reloj reloj, int posicion){
                vecReloj[posicion]=reloj;
        }

 

Hemos terminado la clase Relojería, solo falta 1 más que sería su implementación.

Código Completo

package pqtRelojeria;

public class Relojeria {
        private Reloj []vecReloj;
        private int tamano;
        private int cr;
        
        public Relojeria(int tamano){
                cr=0;
                this.tamano=tamano;
                vecReloj=new Reloj[tamano];     
        }
        
        
        public void registrarReloj(Reloj reloj){
                vecReloj[cr]=reloj;
                cr++;
        }
        
        public int totalReloj(){
                return cr;
        }
        
        public boolean existe(String claveReloj){
                int i;
                for(i=0;(i<cr)&&(!claveReloj.equals(vecReloj[i].getClaveReloj()));i++){ 
                        
                }
                if(i==cr)
                        return false;
                else
                        return true;
        }
                
                
        public int posicion(String claveReloj){
                int i;
                for(i=0;(i<cr)&&(!claveReloj.equals(vecReloj[i].getClaveReloj()));i++){
                }
                if(i==cr)
                        return i;
                else
                        return i;
        }
        
                        
        public void bajasReloj(int posicion){
                for(int i=posicion;i<(cr-1);i++){
                        vecReloj[i]=vecReloj[i+1];
                }
                cr--;
        }
        
        public Reloj obtenerReloj(int posicion){
                return vecReloj[posicion];
        }
        
        public void modificarReloj(Reloj reloj, int posicion){
                vecReloj[posicion]=reloj;
        }
        
}