J'ai crée une classe Compte (abstraite) et deux classes CompteEpargne et CompteChèque qui héritent de Compte. Voici les 3 classes :
public abstract class Compte{
// Déclaration des attributs
private int identifiant;
private String historique;
protected double solde;
// Constructeur de la classe Compte
public Compte(int id, double s){
try{
// Si l'identifiant est négatif, envoie une exception du type IdentifiantNégatif
if(identifiant>=0) this.identifiant=id;
else throw new IdentifiantNégatif();
}
catch(IdentifiantNégatif e){
System.out.println("L'identifiant fourni est négatif : ");
}
this.solde=s;
}
// Méthode Dépot
public void dépot(Compte c, double va){
this.Ajouter();
}
// Méthode Retrait
public void retrait(Compte c, double va){
this.Enlever();
}
// Méthodes abstraites ajouter et enlever qui seront redéfinies dans les classes CompteEpargne et CompteChèque
public abstract void Ajouter();
public abstract void Enlever();
// Méthode permettant de conserver dans une chaine de caractères les opérations du Compte
public void GarderHistorique(String h){
this.historique = historique + h;
}
public abstract class CompteEpargne extends Compte{
// Déclaration des attributs
private int typedecompte;
private double interets;
// Redéfinition du constructeur de la classe Compte
public CompteEpargne(int id, double s){
super(id,s);
}
// Méthode permettant de changer le type de Compte
public void ChangerTypeDeCompte(int t){
this.typedecompte=t;
}
// Méthode permettant de changer la valeur des interets
public void ChangerInterets(double i){
this.interets=i;
}
// Méthode permettant d'ajouter une valeur au solde et de conserver l'opération dans l'historique.
// Cette méthodes redéfinit la méthode abstraite du meme nom de la classe Compte.
public void Ajouter(double v){
solde=solde+v;
String n ="+solde+";
GarderHistorique(n);
}
// Méthode permettant d'enlever une valeur au solde et de consever l'opération dans l'historique.
// Cette méthode redéfinit la méthode abstraite du meme nom de la classe Compte.
public void Enlever(double v){
solde=solde-v;
String n ="+solde+";
GarderHistorique(n);
try{
// Pour un Compte Epargne, si le solde est négatif, une exception du type LimiteNégative est envoyée.
if(solde<=0) throw new LimiteNégative();
}
catch(LimiteNégative e){
System.out.println("Vous avez dépassé la limite négative du Compte Epargne !");
}
}
}
public abstract class CompteChèque extends Compte{
// Déclaration de l'attribut
private double limiteNégative;
// Redéfinition du constructeur de la classe Compte
public CompteChèque(int id, double s){
super(id,s);
}
// Méthode permettant d'ajouter une valeur au solde et de conserver l'opération dans l'historique
public void Ajouter(double v){
solde=solde+v;
String n ="+solde+";
GarderHistorique(n);
}
// Méthode permettant d'enlever une valeur au solde et de consever l'opération dans l'historique
public void Enlever(double v){
solde=solde-v;
String n ="+solde+";
GarderHistorique(n);
try{
// Pour un Compte Chèque, si le solde est inférieur à la limite négative, une excpetion du type
// LimiteNégative est renvoyée.
if(solde <= limiteNégative) throw new LimiteNégative();
}
catch(LimiteNégative e){
System.out.println("Vous avez dépassé la limite négative du Compte Chèque !");
}
}
}
Je cherche alors à exécuter le code suivant :
System.out.print("Identifiant : ");
int id1=StdInput.readlnInt();
De meme pour CompteChèque. Je sais qu'on ne peut pas instancier une classe abstraite mais je suis pourtant bien obligé de déclarer CompteEpargne et CompteChèque comme abstraites à partir du moment où elles redéfinissent des méthodes abstraites de Compte ?
Je ne sais donc pas comment faire et toute aide sera la bienvenue.
8 nov. 2011 à 06:19