Exercice1 : Calcul des impôts locaux
Dans le cadre de l’informatisation d’une mairie, on veut automatiser le calcul des impôts locaux. On
distingue deux catégories d’habitation : les habitations à usage professionnel et les maisons
individuelles, l’impôt se calculant différemment selon le type d’habitation.Pour cela ,on définit les
classes HabitationProfessionnelle et HabitationIndividuelle et les caractéristiques communes à ces
deux classes sont regroupées dans la classe Habitation.
L’objectif du problème est d’implémenter ce schéma d’héritage et de mettre en œuvre le mécanisme de
liaison dynamique.
A) Définition de la classe Habitation :
La classe Habitation comprend les attributs :
-propriétaire du type chaine de caractères et qui correspond au nom de propriétaire,
-adresse du type chaine de caractères et qui correspond à l’adresse de l’habitation,
-surface du double et qui correspond à la surface de l’habitation,
Les méthodes :
-Impot ( ) qui permet de calculer le montant de l’impôt que doit payer le propriétaire de l’habitation, à
raison de 10DH par mètre carré.
-Affiche ( ) qui permet d’afficher les trois attributs de la classe Habitation.
-Un constructeur à trois paramètres permettant d’initialiser une instance de la classe Habitation.
B) Définition des classes HabitationProfessionnelle et HabitationIndividuelle :
Le calcul de l’impôt d’une maison individuelle est différent de celui d’une habitation, il se calcule
en fonction de la surface habitable, du nombre de pièces et de la présence ou non d’une piscine. On
compte 100DH par pièce et 400DH supplémentaires en cas de présence d’une piscine
-Ajouter les attributs NbPieces de type entier et Piscine de type booléen.
-Redéfinir les méthodes afficher et impot.
Le calcul d’une habitation à usage professionnel est également différent de celui d’une habitation.
Il se calcule en fonction de la surface occupée et le nombre d’employés.On compte 60DH
supplémentaires pour chaque employs.
-Ajouter l’attribut NbEmployes de type entier.
-Redéfinir les méthodes afficher et impot.
2
C) Gestion des habitations d’une commune
On désire à présent calculer l’impôt local des habitations (individuelles ou professionnelles) d’une
commune. Pour cela,on utilise une collection d’objets représentée par un tableau où chaque élément
désigne une habitation individuelle ou professionnelle.
-Définir la classe Commune.
-Définir une méthode add permettant d’ajouter une habitation à une commune
-Définir une méthode show pour afficher toutes les habitations de la commune.
TELECHARGE ICI
package tp3;
public class Habitation {
String propriétaire;
String adresse;
Double surface;
public String getPropriétaire() {
return propriétaire;
}
public void setPropriétaire(String propriétaire) {
this.propriétaire = propriétaire;
}
public Habitation(String propriétaire, String adresse, Double surface) {
super();
this.propriétaire = propriétaire;
this.adresse = adresse;
this.surface = surface;
}
public String getAdresse() {
return adresse;
}
public void setAdresse(String adresse) {
this.adresse = adresse;
}
public Double getSurface() {
return surface;
}
public void setSurface(Double surface) {
this.surface = surface;
}
public double Impot() {
return this.surface*10;
}
public void affiche() {
System.out.println("la surface :"+this.surface+"l'adresse"+this.adresse+"proprietre"+this.propriétaire);
}
}
TELECHARGE ICI
package tp3;
public class Habitation {
String propriétaire;
String adresse;
Double surface;
public String getPropriétaire() {
return propriétaire;
}
public void setPropriétaire(String propriétaire) {
this.propriétaire = propriétaire;
}
public Habitation(String propriétaire, String adresse, Double surface) {
super();
this.propriétaire = propriétaire;
this.adresse = adresse;
this.surface = surface;
}
public String getAdresse() {
return adresse;
}
public void setAdresse(String adresse) {
this.adresse = adresse;
}
public Double getSurface() {
return surface;
}
public void setSurface(Double surface) {
this.surface = surface;
}
public double Impot() {
return this.surface*10;
}
public void affiche() {
System.out.println("la surface :"+this.surface+"l'adresse"+this.adresse+"proprietre"+this.propriétaire);
}
}
package tp3;
public class HabitationProfessionnelle extends Habitation {
public HabitationProfessionnelle(String propriétaire, String adresse, Double surface, int nbEmployes) {
super(propriétaire, adresse, surface);
NbEmployes = nbEmployes;
}
int NbEmployes;
public double Impot() {
return this.NbEmployes*60;
}
public void affiche() {
System.out.println("la surface :"+this.surface+"l'adresse"+this.adresse+"proprietre"+this.propriétaire+"nbreEmployer:"+this.NbEmployes);
}
}
package tp3;
public class HabitationIndividuelle extends Habitation{
int NbPieces ;
boolean Piscine;
public HabitationIndividuelle(String propriétaire, String adresse, Double surface, int nbPieces, boolean piscine) {
super(propriétaire, adresse, surface);
NbPieces = nbPieces;
Piscine = piscine;
}
public int getNbPieces() {
return NbPieces;
}
public void setNbPieces(int nbPieces) {
NbPieces = nbPieces;
}
public boolean isPiscine() {
return Piscine;
}
public void setPiscine(boolean piscine) {
Piscine = piscine;
}
public double Impot() {
if(Piscine==false) {
return this.NbPieces*100;}
return this.NbPieces*100+400;
}
public void affiche() {
System.out.println("la surface :"+this.surface+"l'adresse"+this.adresse+"proprietre"+this.propriétaire);
}
}
package tp3;
public class Commune {
Habitation[] tableau ;
int i,tm;
public Commune( int i) {
super();
this.i = i;
this.tableau =new Habitation[i];
}
public Habitation[] getTableau() {
return tableau;
}
public void setTableau(Habitation[] tableau) {
this.tableau = tableau;
}
public int getI() {
return i;
}
public void setI(int i) {
this.i = i;
}
public void add(Habitation tr) {
tableau[tm]=tr;
tm++;
}
public void show() {
for (Habitation compte : tableau) {
compte.affiche();
}
pour tester
public static void main(String[] args) {
Commune tr=new Commune(3);
Habitation r=new Habitation("toufiik","mzili",1000.0);
Habitation rr=new HabitationIndividuelle("yahya","30 ibn sina",123.4, 6, true);
Habitation rrr=new HabitationProfessionnelle("jamal","hay amal",1234.5, 10);
tr.add(r);
tr.add(rr);
tr.add(rrr);
tr.show();
}
}
Commentaires
Enregistrer un commentaire