Comment lancer une exception en interface

Résolu/Fermé
Stoicien Messages postés 78 Date d'inscription jeudi 20 septembre 2007 Statut Membre Dernière intervention 14 mars 2014 - 3 janv. 2008 à 11:34
Stoicien Messages postés 78 Date d'inscription jeudi 20 septembre 2007 Statut Membre Dernière intervention 14 mars 2014 - 4 janv. 2008 à 13:04
Bonjour, Tout d'abort,je remercie tout ceux qui oeuvre pour que nous debutant en programmation puissions apprendre mieux ce que nous aimons de tout coeur :la programmation.Le fait de recevoir dans un bref delai la reponse aux peoccupation est un fait à saluer.
Encore merci !

VOICI LE PROGRAMME QUE J'AI ECRIS EN CLASSE ABSTARCT

LA SOMME



package calculadoraabstract;

public class Sumar extends Calculadora{

public Sumar(int x,int y,double Resultado) {
super(x,y,Resultado);
}
public double getResultado() {
return (x+y);
}

public void setX(int i) {
throw new UnsupportedOperationException("Not yet implemented");
}

}


LA SOUSTRACTION

package calculadoraabstract;


public class Restar extends Calculadora{

public Restar(int x,int y,double Resultado) {
super(x,y,Resultado);
}
public double getResultado() {
return (x-y);
}

}

LA DIVISION




package calculadoraabstract;


public class Dividir extends Calculadora{
// private int y;
public Dividir(int x,int y,double Resultado) {
super(x,y,Resultado);
}
public void sety(int y)throws Exception {
if(y<=0)throw new Exception("El divisor Y tiene que ser mayor que cero");
this.y=y;
}

public double getResultado() {
return (x/y);
}

}

LA MULTIPLICATION




package calculadoraabstract;


public class Multiplicar extends Calculadora{

public Multiplicar(int x,int y,double Resultado) {
super(x,y,Resultado);
}
public double getResultado() {
return (x*y);
}

}
LA CLASSE ABSTRACT CALCULADORA

package calculadoraabstract;

public abstract class Calculadora {
public int x;
public int y;
private double Resultado ;
private static int Operaciones;
/** Creates a new instance of Calculadora */
public Calculadora(int x,int y,double Resultado)/* throws Exception */{
this.Resultado=Resultado;
// if(y<=0)throw new Exception("El divisor Y tiene que ser mayor que cero");
this.x=x;
this.y=y;
this.Operaciones=Operaciones;
Operaciones++;
}
/** Creates a new instance of Calculadora */
public Calculadora(int x,double Resultado) {
this.Operaciones=Operaciones;
this.Resultado=Resultado;
this.x=x;
Operaciones++;
}
public int getX(){
return x;
}
public void sety(int y)throws Exception {
if(y<=0)throw new Exception("El divisor Y tiene que ser mayor que cero");
this.y=y;
}
public int getY(){
return y;
}
public int getOperaciones(){
return Operaciones;
}
public abstract double getResultado();

}

LA CLASSE DU TEST



package calculadoraabstract;


public class Main {


public Main() {
}

public static void main(String[] args) {

Calculadora C1=new Sumar(80,130,58.0);
Calculadora C2=new Restar(45,15,14.0);
Calculadora C3=new Multiplicar(125,100,125.0);
Calculadora C4=new Dividir(50,11,12.0);

imprimir(C1);
imprimir(C2);
imprimir(C3);
imprimir(C4);

}

private static void imprimir(Calculadora C) {
// throw new UnsupportedOperationException("Not yet implemented");

System.out.println("El valor de Y es : "+C.getX()+" .El valor de Y es :"+C.getY());

if(C instanceof Sumar){
Sumar C1=(Sumar)C;
System.out.println("El resultado de la Suma es: "+C1.getResultado());
}else if(C instanceof Restar) {
Restar C2=(Restar)C;
System.out.println("El resultado de la Sustraccion es: "+C2.getResultado());
}else if(C instanceof Multiplicar) {
Multiplicar C3=(Multiplicar)C;
System.out.println("El resultado del Producto es: "+C3.getResultado());
}else if(C instanceof Dividir ) {
try{
Dividir C4=(Dividir)C;
System.out.println("El resultado de la division es: " +C4.getResultado());
}catch (Exception e){
System.out.println(e.getMessage());
}
}
System.out.println("El numero de Operaciones es :"+C.getOperaciones());
}
}

2 réponses

ecor6633 Messages postés 28 Date d'inscription samedi 18 janvier 2003 Statut Membre Dernière intervention 16 octobre 2008 5
3 janv. 2008 à 12:24
Euh, je ne comprends pas tout à fait la logique que tu mets en place mais ce n'est pas grave pour moi au moins dans ta classe Calculadora la méthode devrait être :
public abstract double getResultado() throws UnsupportedOperationException;

Simplement pour indiquer que la méthode getResultado peut quelque fois soulever une exception.

Ceci dit, pourquoi est-ce que tu doit fournir un Resultado à ton constructeur ... ?
0
Stoicien Messages postés 78 Date d'inscription jeudi 20 septembre 2007 Statut Membre Dernière intervention 14 mars 2014 7
4 janv. 2008 à 13:04
Merci à tous ceux qui m'ont aidé et qui aident d'autres personnes en difficulté pour resoudre leurs probleme.
J'ai donc pu lance l'Exception de la maniere suivante :


public abstract getResultado() throws Exception ;
C'est dans la classe abstract Resutado que je devais lancer l'exception et non dans
public void setY ( int y) throws Exception {
if ( y< = 0)throw new Exception ("La valeur de Y doit etre superieure à Zero");
0