
public class Raiz3{
    
    private IRaiz raiz=null;
    private IVistaRaiz vista = null;
    public Raiz3(int modo, int procesamiento) {
      
        if (modo==IVistaRaiz.GUI) vista = new GUIRaiz();
        else if (modo==IVistaRaiz.TERMINAL) vista= new TerminalRaiz() ;
        if (procesamiento == IRaiz.POSITIVO)
            raiz = new RaizPositiva();
        else if (procesamiento == IRaiz.IMAGINARIO) 
            raiz = new RaizImaginaria();
        
    }
    public double raiz(double x) throws Exception{
        return raiz.raiz(x);
    }//raiz
    public double capturar(){
        return vista.capturar();
    }
    public void desplegar(String msg) {
        vista.desplegar(msg);
        
    }
    public void error(String msg) {
        vista.error(msg);
    }
    public void operacion(){
        double x;
        try{
            x = this.capturar();
            double y= this.raiz(x);
            String msg ="";
            if (raiz.getProcesamiento() == IRaiz.IMAGINARIO && x<0) 
                msg = "j" + y;
            else 
                msg = msg + y;
            this.desplegar("El resultado es: "+ msg);
        }//try
        catch (Exception e){
            this.error("Numero negativo");
        }//catch
    }//operacion
    
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        Raiz3 rz = new Raiz3(IVistaRaiz.TERMINAL,IRaiz.IMAGINARIO);
        rz.operacion();
        
    }//main
    
}
