TP sur l'héritage

Page Home (contact) Retour TPs

Support de cours


Articles à vendre

Une société vend des articles de papeterie. Vous vous limiterez aux articles suivants : De plus cette société peut vendre ces articles par lots. Vous supposerez que les lots sont composés d'un certain nombre d'un même type d'articles, par exemple un lot de 10 stylos noirs B2 de la marque WaterTruc. Un lot a une référence. Il a une marque qui est celle de l'article dont il est composé (WaterTruc pour l'exemple précédent). Le nom du lot est déterminé par le nombre d'articles dont il est composé ; par exemple "Lot de 10 stylo noir B2" (vous êtes dispensé de mettre les noms au pluriel !). Le prix du lot est déterminé par le prix unitaire de l'article multiplié par le nombre d'articles, auquel est enlevé un certain pourcentage qui dépend du lot. Par exemple, si un lot de 10 stylos à 100 € a un pourcentage de réduction de 20 %, le prix du lot sera de 10 x 100 x (100 - 20) / 100 = 800 €. Le prix d'un lot sera calculé au moment où on demandera le prix du lot ; il n'est pas fixé une fois pour toute et il change si le prix de l'article qui compose le lot est modifié.

Ecrivez des classes dans un paquetage "fr.unice.toto.article" pour représenter les différents articles (où vous remplacerez toto par votre nom).

On ne s'intéresse qu'aux différents types d'articles. Ainsi, on aura une seule instance qui représentera le type "stylo noir B2" et pas 250 instances si la société possède 250 "stylo noir B2". Si vous voulez démarrer une gestion de stock, vous pouvez ajouter le nombre d'articles en stock pour chaque type, mais ça n'est pas demandé.

Vos classes devront permettre de faire du polymorphisme avec la méthode qui donnera le prix d'un article (application dans l'exercice suivant sur les factures).

Avant de commencer à coder, faites valider votre arborescence d'héritage à l'enseignant qui encadre le TP.

Correction :

Les classes

Du polymorphisme dans une facture

La société établit des factures numérotées (en partant de 1) et datées, comprenant le nom du client, le prix total de la commande et, pour chaque article commandé, sa référence, son prix unitaire, le nombre d'articles commandés et le prix total pour cet article.
Pour simplifier, un client ne sera qu'un simple nom dans la facture (pas de classe Client).

Ajoutez les classes pour représenter ces factures, dans un paquetage "fr.unice.toto.facture" (où vous remplacerez toto par votre nom).

Vous écrirez une classe test qui affiche 1 facture pour

et une autre facture pour pour 2 clients différents.
Le programme créera tous les objets nécessaires à l'affichage des 2 factures.
Une facture s'affichera sur le modèle suivant (on ne demande pas d'affiner davantage le format d'affichage mais si vous pouvez faire mieux, n'hésitez pas !) :
---------------------------------------------------------------------
Facture 125  Client: Toto  Date: 10 novembre 2010

Quant.  Ref.    Nom             Marque      PU      PT
10        s1      Stylo Jade       Watertruc       50.0  500.0
15        r1      Ramette haute qualité  Clairefont    9.5    142.5
2        l1       Lot de 5 Stylo or    Marker 450.0  900.0

Prix total facture : 1542.5 €
---------------------------------------------------------------------

Pour tester vos classes, utilisez une classe semblable à cette classe TestFacture. Évidemment, il vous faudra adapter ce code aux classes que vous avez écrites dans l'exercice précédent, en particulier aux constructeurs de ces classes.

Correction :

Les classes

L'héritage appliqué aux employés d'une entreprise, polymorphisme

Vous allez programmer le calcul des salaires hebdomadaires des employés d'une entreprise.

Cette entreprise comporte plusieurs types d'employés :

Modélisez cette situation à l'aide de classes dans un paquetage fr.unice.toto.employe (où vous remplacerez toto par votre nom). Un conseil : écrivez votre hiérarchie d'héritage sur papier et faites-la vérifier par l'enseignant avant de commencer à coder.

Une classe Paie comportera une unique méthode main() qui entrera les informations sur des employés des différents types (au moins 3 commerciaux). Les employés seront enregistrés dans un tableau employes.
Au moins un des employés sera créé avec le constructeur qui n'a que le nom en paramètre, et vous entrerez ensuite les informations pour son salaire avec la méthode setInfosSalaire. Pour au moins un autre employé, vous utiliserez le constructeur pour entrer les informations sur le salaire.
La méthode main affichera le salaire hebdomadaire de chacun des employés dans une boucle "for" qui parcourra le tableau des employés. Vous utiliserez le polymorphisme avec un accesseur pour le salaire. L'affichage aura exactement la forme : "Dupond gagne 2500 € ". Vérifiez les calculs des salaires !

Correction

Les différentes classes


Javadoc et fichiers jar (à présenter à l'enseignant au prochain TP)

Générez la documentation du paquetage sur les employés avec l'outil javadoc.
Ajoutez une page pour votre travail dans votre page Web personnelle, accessible sur le Web.

Cette page devra donner les explications nécessaires et elle permettra d'accéder

Donnez 2 versions de vos scripts : pour PC sous Windows/DOS (.bat) et pour Unix/Linux (.sh).

On doit pouvoir installer et lancer l'application en moins de 3 minutes (environ ;-) ).


Pour ceux qui ont déjà fini...

L'héritage chez les animaux (super !)

Des animaux, des mamifères et des poissons. Des chiens et des hommes...

Modélisez avec des classes. Ajoutez à chaque classe fille au moins une variable et une méthode nouvelles. Arrangez-vous pour que les classes filles puissent manipuler directement les nouvelles variables.

Voici ci-dessous une classe de test et l'affichage que vos classes devront fournir. La méthode getType de vos classes devra fournir une description de l'instance, en incluant les descriptions de toutes les classes mères. Pour cela, il vous est imposé d'utiliser le mot-clé super.

La classe de test :

public class TestAnimal {
  public static void main(String[] args) {
    Animal[] animaux = new Animal[5];
    animaux[0] = new Animal("Truc");
    animaux[1] = new Animal();
    animaux[2] = new Chien("Médor");
    animaux[3] = new Homme();
    animaux[4] = new Homme("Robert");
    for (int i = 0; i < animaux.length; i++) {
      System.out.println(animaux[i].getType());
    }
  }
}
L'affichage :
Je suis un animal de nom Truc.
Je suis un animal.
Je suis un animal de nom Médor. Je suis un mamifère. Je suis un chien.
Je suis un animal. Je suis un mamifère. Je suis un homme.
Je suis un animal de nom Robert. Je suis un mamifère. Je suis un homme.

Correction :

Les classes


Retour TPs