Deug Technologie Industrielle 2ème année
TP de programmation JAVA
La notion d'héritage entre les classes
Comprendre la notion d'héritage entre les classes.
Dans le cadre de l'informatisation d'une mairie, on veut pouvoir grâce à l'ordinateur :
Nous allons utiliser pour cela les classes Batiment, Villa
et Usine.
On comprend bien en effet qu'une villa est une sorte de batiment.
De même pour une usine.
La relation "est une sorte de" est exprimée en Langage Orienté Objet par un héritage de classe. On aura donc la hierarchie suivante entre les classes Batiment, Villa, et Usine :
Ce TP va consister à écrire les classes Batiment,
Villa, et Usine.
On vous fournit une application qui permet d'instancier ces classes.
C'est une application java qui affiche une interface de dialogue. (Les
plus curieux pourront jetter un oeil dans le fichier source InterfaceTP5.java
)
Les exercices 1, 2 et 3 couvrent respectivement les classes Batiment, Villa et Usine. Réfléchissez bien au nombre de paramètres nécessaire pour chaque méthode à créer.
On va commencer par créer la classe mère (ou super-classe) : la classe Batiment.
Les attributs de cette classe doivent aussi être valables pour l'ensemble des sous-classes de Batiment. On a choisi :
Attention : ces variables devront pouvoir être utilisées par les deux sous-classes. Il faut donc les déclarer en tant que private protected (ce qui les rend accessible aux sous-classes).
Il y a deux fonctionnalités générales pour un batiment (donnant lieu à deux méthodes) :
public void affiche() { System.out.println("Je suis un Batiment, voici mes attributs :"); System.out.println("- proprietaire : " + proprietaire); System.out.println("- adresse : " + adresse); System.out.println("- surface : " + surface + "m2"); }
Le constructeur de la classe a trois paramètres qui permettent d'initialiser à l'instanciation les trois attributs proprietaire, adresse, surface.
Recopier sur votre compte les fichiers qui vous seront nécessaires à la rédaction de ce TP (commande source ~genoud/installerTP5, un répertoire tp5 contenant ces fichiers est créé par cette commande )
le fichiers recopiés sont les sources des différentes classes néssaires à l'interface interactive de l'application (.java)) et les versions compilées correspondantes (.class)
- tester l'interface du TP5 (commande java InterfaceTP5 ). Attention, cette interface fait déjà appel aux classes Batiment, Villa, et Usine , il ne vous sera possible d'instancier que lorsque vous aurez créé les classes JAVA correspondantes.
- créer la classe Batiment en respectant bien les noms de méthodes donnés.
- tester la classe en utilisant l'application InterfaceTP5.
Villa est une sous classe de Batiment. Pour la déclarer, on écrira :
public Class Villa extends Batiment { ... }
Outre le fait qu'une villa comporte aussi un propriétaire, une adresse et une surface (caractéristiques héritées), on a deux autres caractéristiques :
Elle possède trois fonctionnalités, dont une nouvelle :
On remarquera cependant pour les deux autres fonctionnalités :
super.affiche();
Ce qui signifie qu'on utilise la méthode de la classe superieure
telle qu'elle y est écrite.
On devra bien sûr ajouter les lignes nécessaires à
l'affichage du nombre de pieces et de la présence ou non d'une piscine
(pour cela on se servira de la méthode possedePiscine).
En ce qui concerne le constructeur, là encore on va réutiliser
le constructeur écrit dans la super-classe Batiment. Pour
cela on fera un simple appel à la méthode super(...)
comme si c'était le constructeur (attention donc aux paramètres).
Les paramètres sont au nombre de cinq : les trois utilisés
précedemment et deux nouveaux nous permettant d'initialiser les
attributs spécifiques nbPieces et piscine.
- créer la classe Villa en respectant bien les conventions et les remarques ci-dessus.
- tester la classe grâce à l'interface fournie.
Usine est aussi une sous-classe héritant de la classe Batiment.
Une usine comporte donc également un propriétaire, une adresse et une surface (caractéristiques héritées), on a trois attributs qui distinguent une usine d'une maison :
Elle possède aussi la méthode affiche. On procédera de la même façon pour l'implémentation que dans la classe Villa.
Pour une usine on veut de plus calculer le flot de circulation qu'elle induit. C'est un nombre égal au nombre moyen de livraisons quotidiennes + le nombre de véhicules utilisés par le personnel pour se rendre au travail. On sait que statistiquement 80% des employés utilisent leur véhicule pour se rendre à leur travail.
Cette méthode est aussi appelée depuis l'interface du TP5 fournie.
On remarquera que l'on n'a pas parlé de la méthode impot. En effet l'impôt local sur une usine se calcule de la même façon que dans le cas général d'un batiment (à savoir 2Frs/m2). En ne mettant pas le code de la méthode dans la classe, le langage JAVA est capable de retrouver tout seul la méthode à utiliser. Ici il s'agit de la méthode impot de la super-classe Batiment.
Pour ce qui est du constructeur, il possède six paramètres : les trois premiers correspondants aux atributs de la super-classe Batiemnet et les trois suivants aux attributs spécifiques à la classe Usine.
- créer la classe Usine en respectant bien les conventions et les remarques ci-dessus.
- tester la classe grâce à l'interface fournie.
Attention : toute ressemblance avec une quelconque réalité serait une coïncidence fortuite...