Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
Corrigés
Concepts Objet : de la modélisation au développement
SOMMAIRE
1. DEFINITION DU PRODUIT...................................................................................... 2
1.1. REPRESENTATION UML ............................................................................... 2
1.2. CODE JAVA POUR LA CLASSE PRODUIT.................................................... 3
1.3. CODE JAVA POUR LA CLASSE TESTPRODUIT .......................................... 4
4. POLYMORPHISME ................................................................................................14
4.1. PRODUITSAISONNIER .................................................................................14
4.2. CLASSE TESTPRODUITS .............................................................................15
6. COMPLEMENTS ....................................................................................................22
6.1. CLASSE PRODUITS ......................................................................................23
6.2. CLASSE TESTLISTE .....................................................................................25
1. DEFINITION DU PRODUIT
Utilisation de l’encapsulation.
package formation.gestionProduit;
/**
* <p>Titre : </p>
* <p>Description : </p>
* <p>Copyright : Copyright (c) 2004</p>
* <p>Société : </p>
* @author non attribuable
* @version 1.0
*/
package formation.gestionProduit;
/**
* <p>Titre : </p>
* <p>Description : </p>
* <p>Copyright : Copyright (c) 2004</p>
* <p>Société : </p>
* @author non attribuable
* @version 1.0
*/
//création du produit2
Produit produit2 = new Produit("produit200");
produit2.setDenomination("crayon de couleur");
produit2.setPrix(2);
//affichage du produit1
System.out.println("AFFICHAGE1: " + produit1.getCode() + " " +
produit1.getDenomination());
//affichage du produit2
System.out.println("AFFICHAGE1: " + produit2.getCode() + " " + produit1.getPrix()
+ " " + produit2.getDenomination());
}
Résultat
2. AGREGATION ET COMPOSITION
package formation.gestionProduit;
/**
* <p>Titre : </p>
* <p>Description : </p>
* <p>Copyright : Copyright (c) 2004</p>
* <p>Société : </p>
* @author non attribuable
* @version 1.0
*/
package formation.gestionProduit;
public class Produit {
private String code;
private Denomination denomination;
private int prix;
/** Constructeur attendant en argument une chaine de caractères
* permettant de renseigner le code du produit
* création de l'instance dénomination
*/
public Produit(String code) {
this.code = code;
this.denomination = new Denomination();
}
public Denomination getDenomination() {
return denomination;
}
public void setDenomination(Denomination denomination) {
this.denomination = denomination;
}
public String afficheLibelle() {
//Variable locale pour récupérer l'objet denomination
Denomination lib = this.getDenomination();
//gestion de la variable locale pour manipuler les méthodes de Denomination
return lib.getLibelleCourt() + " " + lib.getLibelleLong();
}
public void modifLibelle(String lg, String court) {
//Variable locale pour récupérer l'objet denomination
Denomination lib = this.getDenomination();
//gestion de la variable locale pour manipuler les méthodes de Denomination
lib.setLibelleCourt(court) ;
lib.setLibelleLong(lg);
}
// suite des get et set définis précédemment
}
Pour tester nos produits et nos dénominations, on utilise les méthodes modifLibelle
et afficheLibelle.
package formation.gestionProduit;
//création du produit2
Produit produit2 = new Produit("produit200");
produit2.modifLibelle("crayon de couleur jaune", "crayon jaune");
produit2.setPrix(2);
//affichage du produit1
System.out.println("AFFICHAGE1: " + produit1.getCode() + " " +
produit1.afficheLibelle());
//affichage du produit2
System.out.println("AFFICHAGE2: " + produit2.getCode() + " " + produit2.getPrix()
+ " " + produit2.afficheLibelle());
}
Résultat
3. HERITAGE SIMPLE
3.2.1. PRODUITPERISSABLE
package formation.gestionProduit;
import java.util.*;
/**
* <p>Titre : </p>
* <p>Description : </p>
* <p>Copyright : Copyright (c) 2004</p>
* <p>Société : </p>
* @author non attribuable
* @version 1.0
*/
3.2.2. PRODUITSAISONNIER
package formation.gestionProduit;
/**
* <p>Titre : </p>
* <p>Description : </p>
* <p>Copyright : Copyright (c) 2004</p>
* <p>Société : </p>
* @author non attribuable
* @version 1.0
*/
package formation.gestionProduit;
public class TestProduits {
public TestProduits() {
}
//création du produit2
Produit produit2 = new Produit("produit200");
produit2.modifLibelle("crayon de couleur jaune", "crayon jaune");
produit2.setPrix(2);
//création du produit3
ProduitPerissable produit3 = new ProduitPerissable("produit300");
produit3.modifLibelle("carton de lait contenant 6 boites", "pack de lait");
produit3.setPrix(6);
produit3.setDureeConservation(6);
//création du produit4
ProduitSaisonnier produit4 = new ProduitSaisonnier("produit400");
produit4.modifLibelle("paire de gants en laine couleur rouge",
"gants rouges");
produit4.setPrix(6);
produit4.setRemiseFinSaison(3);
Résultat obtenu :
4. POLYMORPHISME
4.1. PRODUITSAISONNIER
package formation.gestionProduit;
/**
* <p>Titre : </p>
* <p>Description : </p>
* <p>Copyright : Copyright (c) 2004</p>
* <p>Société : </p>
* @author non attribuable
* @version 1.0
*/
public class ProduitSaisonnier
extends Produit {
private String saison;
private int remiseFinSaison;
public ProduitSaisonnier(String code) {
super(code);
}
public String getSaison() {
return saison;
}
public void setSaison(String saison) {
this.saison = saison;
}
public int getRemiseFinSaison() {
return remiseFinSaison;
}
public void setRemiseFinSaison(int remiseFinSaison) {
this.remiseFinSaison = remiseFinSaison;
}
public int getPrix() {
//On surcharge la définition de prix pour enlever la remise
//récupération du prix
int prix = super.getPrix();
5. HERITAGE MULTIPLE
package formation.gestionProduit;
/**
* <p>Titre : </p>
* <p>Description : </p>
* <p>Copyright : Copyright (c) 2004</p>
* <p>Société : </p>
* @author non attribuable
* @version 1.0
*/
package formation.gestionProduit;
/**
* <p>Titre : </p>
* <p>Description : </p>
* <p>Copyright : Copyright (c) 2004</p>
* <p>Société : </p>
* @author non attribuable
* @version 1.0
*/
public class ProduitFugace extends ProduitPerissable implements Saison {
private String saison;
private int remiseFinSaison;
public ProduitFugace(String code) {
super(code);
}
/**
* <p>Titre : </p>
* <p>Description : </p>
* <p>Copyright : Copyright (c) 2004</p>
* <p>Société : </p>
* @author non attribuable
* @version 1.0
*/
public class ProduitSaisonnier extends Produit implements Saison {
package formation.gestionProduit;
public class TestProduits {
public TestProduits() {}
public static void main(String[] args) {
//création du produit1
Produit produit1 = new Produit("produit100");
produit1.modifLibelle("crayon de papier mine carbone ", "crayon de papier");
produit1.setPrix(1);
//création du produit2
Produit produit2 = new Produit("produit200");
produit2.modifLibelle("crayon de couleur jaune", "crayon jaune");
produit2.setPrix(2);
//création du produit3
ProduitPerissable produit3 = new ProduitPerissable("produit300");
produit3.modifLibelle("carton de lait contenant 6 boites", "pack de lait");
produit3.setPrix(6);
produit3.setDureeConservation(6);
//création du produit4
ProduitSaisonnier produit4 = new ProduitSaisonnier("produit400");
produit4.modifLibelle("paire de gants en laine couleur rouge", "gants rouges");
produit4.setPrix(6);
produit4.setRemiseFinSaison(3);
//création du produit5
ProduitFugace produit5 = new ProduitFugace("produit500");
produit5.modifLibelle("huitre fine claire taille 2", "fine claire");
produit5.setPrix(15);
produit5.setRemiseFinSaison(5);
//Enregistrement des produits crées dans un tableau
Produit produits[] = new Produit[5];
produits[0] = produit1;
produits[1] = produit2;
produits[2] = produit3;
produits[3] = produit4;
produits[4] = produit5;
//Polymorphisme
for (int i = 0; i < produits.length; i++) {
System.out.println("AFFICHAGE élement " + i + " " +
produits[i].getPrix());
}
}}
Résultat obtenu :
package formation.gestionProduit;
public class TestSaisons {
public static void main(String[] args) {
//création du produit4
ProduitSaisonnier produit4 = new ProduitSaisonnier("produit400");
produit4.modifLibelle("paire de gants en laine couleur rouge",
"gants rouges");
produit4.setPrix(6);
produit4.setRemiseFinSaison(3);
//création du produit5
ProduitFugace produit5 = new ProduitFugace("produit500");
produit5.modifLibelle("huitre fine claire taille 2",
"fine claire");
produit5.setPrix(15);
produit5.setRemiseFinSaison(5);
//création du produit6
ProduitFugace produit6 = new ProduitFugace("produit600");
produit6.modifLibelle("bar Breton de ligne", "bar");
produit6.setPrix(25);
produit6.setRemiseFinSaison(0);
//création du produit7
ProduitSaisonnier produit7 = new ProduitSaisonnier("produit700");
produit7.modifLibelle("bonnet de laine couleur rouge", "bonnet rouge");
produit7.setPrix(12);
produit7.setRemiseFinSaison(3);
//création du produit8
ProduitSaisonnier produit8 = new ProduitSaisonnier("produit800");
produit8.modifLibelle("Echarpe de laine couleur rouge", "Echarpe rouge");
produit8.setPrix(8);
produit8.setRemiseFinSaison(2);
//Enregistrement des produits crées dans un tableau de Saison
Saison saison[] = new Saison [5];
saison[0] = produit8;
saison[1] = produit7;
saison[2] = produit6;
saison[3] = produit4;
saison[4] = produit5;
//Polymorphisme
for (int i = 0; i < saison.length; i++) {
System.out.println("AFFICHAGE élement " + i + " remise " +
saison[i].getRemiseFinSaison() + " prix "
+ saison[i].getPrix());
}
}
}
Résultat obtenu :
6. COMPLEMENTS
Afin de mémoriser les produits à commander, on crée une classe qui contient en
variable d’instance une structure de données de type Hashtable (appartient au
java.util). On préfère la manipulation d’une structure plutôt que d’un tableau, pour
gérer de manière dynamique le nombre d’éléments à ajouter. (Un tableau est
statique). Le contenu de cette structure sera des objets de type Produit, et/ou de ses
classes filles.
Lorsque l’on ajoute ou supprime un produit, il faut vérifier que l’on traite bien un objet
Produit.
Lorsque l’on ajoute un produit, on vérifie en plus s’il n’existe pas déjà dans la liste.
On crée donc une classe nommée Produits et une classe permettant de tester
TestListe.
package formation.gestionProduit;
//importation pour la manipulation de la structure de données
import java.util.*;
public class Produits {
//Liste des produits
private Hashtable lesProduits;
//constructeur : création de l’objet structure de données.
public Produits() {
lesProduits = new Hashtable();
}
}
}
package formation.gestionProduit;
//création du produit2
Produit produit2 = new Produit("produit200");
produit2.modifLibelle("crayon de couleur jaune", "crayon jaune");
produit2.setPrix(2);
//création du produit3
ProduitPerissable produit3 = new ProduitPerissable("produit300");
produit3.modifLibelle("carton de lait contenant 6 boites", "pack de lait");
produit3.setPrix(6);
produit3.setDureeConservation(6);
//création du produit4
ProduitSaisonnier produit4 = new ProduitSaisonnier("produit400");
produit4.modifLibelle("paire de gants en laine couleur rouge",
"gants rouges");
produit4.setPrix(6);
produit4.setRemiseFinSaison(3);
//création du produit5
ProduitFugace produit5 = new ProduitFugace("produit500");
produit5.modifLibelle("huitre fine claire taille 2",
"fine claire");
produit5.setPrix(15);
produit5.setRemiseFinSaison(5);
}
}
Résultat obtenu :
Remarque :
La méthode afficheInfo qui existe dans la classe Produits et dans la classe Client des
exemples du cours est une méthode polymorphée.