• Aucun résultat trouvé

Remise à niveau

N/A
N/A
Protected

Academic year: 2022

Partager "Remise à niveau"

Copied!
2
0
0

Texte intégral

(1)

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.

(2)

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();

} }

Références

Documents relatifs

◦ Écrire le code qui permet de cloner un point : ajouter la méthode cloner(). ◦ Écrire le code qui permet de créer un point à partir d’un autre : constructeur ayant comme

Une m´ ethode statique n’a pas acc` es ` a l’´ etat de la classe, il s’agit d’une fonction utilitaire rattach´ ee ` a la classe (attention aux faux amis avec d’autres

Question 1-2 Donnez la grammaire d’une fonction affine, la grammaire d’un domaine, la grammaire d’une expression A LPHA que l’on supposera toujours sous la

[r]

Pour trouver plusieurs blocs de mémoire libre, plusieurs accès de disque pourraient être demandés. Pour augmenter l’efficacité, nous pouvons garder en mémoire centrale

Les précautions à prendre lorsque l’on donne une valeur par défaut à un argument de constructeur sont les mêmes que pour les autres méthodes ou fonctions.. Constructeur par

Dans notre contexte, l’aspect affectation englobe toute r´ epartition des services sur un ensem- ble de ressources, comme des v´ ehicules, types de v´ ehicules, d´ epˆ ots ou

„ La boîte de dialogue de changement de police vous permet de mettre à la disposition de l’utilisateur un moyen de changer de police, ou de changer ses attributs (couleur,