Remise à niveau
Dans le cadre de l’informatisation d’une mairie, on veut automatiser le calcul des impôts locaux. On distingue deux catégories d’habitations : 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. On a donc un schéma de classes où les classes HabitationProfessionnelle et HabitationIndividuelle héritent de la classe Habitation.
Définition de la classe Habitation
Objectif : Définir une classe avec un constructeur et créer une instance de cette classe. La classe Habitation comprend les attributs et méthodes suivantes:
Attributs :
- proprietaire du type chaîne de caractères et qui correspond au nom du propriétaire, - adresse du type chaîne de caractères et qui correspond à l’adresse de l’habitation,
- surface du type double et qui correspond à la surface de l’habitation et qui permet de calculer le montant de l’impôt.
Méthodes :
- double Impot() qui permet de calculer le montant de l’impôt que doit payer le propriétaire de l’habitation à raison de 1€ par m2.
- void 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 : Habitation(String P, String A, double S);
Question 1 : Définissez la classe Habitation Question 2 : Tester votre programme.
Définition des classes HabitationIndividuelle et HabitationProfessionnelle
Objectif : Utiliser l’héritage pour définir de nouvelles classes, redéfinir des méthodes dans les classes héritières.
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 10€/pièce et 50€ supplémentaire en cas de présence d’une piscine.
Question 3 Définir la classe HabitationIndividuelle qui hérite de la classe Habitation en utilisant l’en-tête suivant :
public class HabitationIndividuelle extends Habitation { ...
};
Ajouter les attributs NbPieces de type entier et Piscine de type booléen. Redéfinir les méthodes Impot et Affiche. La méthode Affiche doit afficher, les attributs proprietaire, adresse et surface de la classe Habitation, et les attributs NbPieces et Piscine propres à la classe HabitationIndividuelle. La première ligne de la méthode Affiche, commencera par l’instruction super.Affiche(), permettant d’appeler la méthode Affiche de la classe mère Habitation.
Question 4 Tester votre programme.
Le calcul de l’impôt d’une habitation à usage professionnel est également différent de celui d’une habitation. Il se calcule en fonction de la surface occupée par le bâtiment et du nombre d’employés travaillant dans l’entreprise. On compte 100€ supplémentaire par tranche de 10 employés.
Question 5 Définir la classe HabitationProfessionnelle qui hérite de la classe Habitation en utilisant l’en-tête suivant :
public class HabitationProfessionnelle extends Habitation { ...
};
Ajouter l’attribut NbEmployes de type entier. Redéfinir les méthodes Impot et Affiche. La méthode Affiche doit afficher, en plus des attributs proprietaire, adresse et surface, l’attribut NbEmployes.
Question 6 Tester votre programme.
/* Classe TestHabitation permettant de tester la classe Habitation*/
public class TestHabitation{
public static void main (String[] args){
double I;
// creation d’un objet de type Habitation
Habitation H = new Habitation("Jean", "METZ", 120);
// calcul de l’impôt I = H.Impot();
// affichage des attributs de la classe Habitation H.Affiche();
} }
/* Classe TestHabitationIndividuelle pour tester la classe HabitationIndividuelle */
public class TestHabitationIndividuelle{
public static void main (String [] args){
double I;
// creation d’un objet de type HabitationIndividuelle
HabitationIndividuelle HI = HabitationIndividuelle new("Paul",
"METZ", 120, 5, False);
// calcul de l’imp^ot I = HI.Impot();
// affichage des attributs de la classe HabitationIndividuelle HI.Affiche();
} }
/* Classe TestHabitationProfessionnelle permettant de tester la classe HabitationProfessionnelle */
public class TestHabitationProfessionnelle { public static void main (String [] args){
double I;
// creation d’un objet de type HabitationProfessionnelle HabitationProfessionnelle HP = new
HabitationProfessionnelle("ImportExport", "METZ", 2500, 130);
// calcul de l’impôt I = HP.Impot();
// affichage des attributs de la classe HabitationProfessionnelle HP.Affiche();
} }