Deug Technologie Industrielle 2ème année

TP de programmation JAVA

La notion d'héritage entre les classes

But du TP :

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 :

  1. calculer automatiquement les impôts locaux à payer pour un batiment donné (villa ou usine),
  2. calculer automatiquement le flux moyen quotidien des véhicules sortant des usines de la ville (dans le cadre de l'aménagement du territoire et des voieries, on désir savoir quels sont les endroits surchargés).

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.

Exercice 1 : la classe Batiment

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) :

Le constructeur de la classe a trois paramètres qui permettent d'initialiser à l'instanciation les trois attributs proprietaire, adresse, surface.

Travail demandé:

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.

Exercice 2 : la classe Villa

Villa est une sous classe de Batiment. Pour la déclarer, on écrira :

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 :

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.

Travail demandé:

- créer la classe Villa en respectant bien les conventions et les remarques ci-dessus.

- tester la classe grâce à l'interface fournie.

Exercice 3 : et enfin la classe Usine

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.

Travail demandé:

- 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...