/*
 * RubricaBase.java
 *
 * Created on 28 febbraio 2004, 16.50
 */

package Telefono;

/**
 *
 * @author  stfn
 */
public class RubricaBase {

    //dichiara due variabili array che devono mantenere registrate una coppia
    //di stringhe tra loro correlate (es. nome-numero telefonico)
    private String[] arr1;
    private String[] arr2;
    /** Creates a new instance of RubricaBase */
    public RubricaBase() {
        AllocaMemoria();
    }
    //metodo serve ad allocare un opportuno numero
    //di elementi degli array: classi derivate dalla presente
    //potranno effettuare un overriding per modificare
    //il comportamento di base
    protected void AllocaMemoria(){
        //alloca per default 10 elementi per arr1 e arr2
        arr1=new String[10];
        arr2=new String[10];
    }
    //esempio di overloading: 
    //1)stesso nome del metodo;
    //2)stesso valore di ritorno;
    //3)diverso numero di parametri passati
    protected void AllocaMemoria(int nelem){
        //alloca memoria per un 
        //numero di elemento pari a nelem
        arr1=new String[nelem];
        arr2=new String[nelem];
    }
    //ritorna l'indirizzo del primo array
    public int getArr1Length(){
        return arr1.length;
    }
    //ritorna l'indirizzo del secondo array
    public int getArr2Length(){
        return arr2.length;
    }
    //svolge la funzione di controllare se un 
    //indice rientra nel campo di esistenza degli
    //elementi allocati per gli array. 
    protected boolean TestCampoEsistenza(int i, String[] arr){
        if((i>=0)&&(i<arr.length))
            return true;
        return false;
    }
    //metodo che opera un'assegnazione all'i-esimo
    //elemento di arr1
    protected boolean setArr1(int i, String txt){
        //test per non scrivere in un elemento non allocato
        //ovvero oltre il numero di elementi dell'array
        if(!TestCampoEsistenza(i, arr1))
            return false;
        //
        arr1[i]=txt;
        return true;
    }
    //metodo che opera un'assegnazione all'i-esimo
    //elemento di arr1
    protected boolean setArr2(int i, String txt){
        //test per non scrivere in un elemento non allocato
        //ovvero oltre il numero di elementi dell'array
        if(!TestCampoEsistenza(i, arr2))
            return false;
        //
        arr2[i]=txt;
        return true;
    }
    //metodo che scrive contestualmente in entrambi gli
    //array
    protected boolean setArr1_2(int i, String txt1, String txt2){
        return ((setArr1(i,  txt1))&&(setArr2(i,  txt2)));
    }
    //metodo che ritorna il valore di un elemento di arr1
    public String getArr1(int i){
        if(TestCampoEsistenza(i, arr1))
            return arr1[i];
        return "";
    }
    //metodo che ritorna il valore di un elemento di arr2
    public String getArr2(int i){
        if(TestCampoEsistenza(i, arr2))
            return arr2[i];
        return "";
    }
}
