Programmation Java TD N° 5 A. Un employé est caractérisé par les

publicité
Programmation Java
TD N° 5
A. Un employé est caractérisé par les informations suivantes: un nom, une adresse, un téléphone et une adresse email. Un employé peut être un employé à plein temps ou bien à temps partiel. Dans le cas d'une employé à temps partiel, il faut également stocker le volume horaire travaillé par semaine ainsi que le montant horaire perçu par l'employé. Dans le cas d'un employé à plein temps, son volume horaire étant fixe, on stocke en plus des informations de base d'un employé le salaire mensuel. Vous devez écrire une méthode qui calcule le salaire annuel pour un employé à temps plein.
1. Ecrire les classes nécessaires.
2. Créer un employé à temps partiel : Pierre habitant 5 bd Descartes 77454 Champs sur Marne, dont le téléphone est le 0148484040 et l'email [email protected]. Il travaille 15 heures par semaine à 45 euros de l'heure.
3. Créer un employé à temps plein; Marie qui habite 4 rue de Meaux à 75001 Paris, téléphone 0140404040, email: [email protected]. Son salaire mensuel est de 3000 euros.
B. Dans l'optique de créer de nombreux employés, on décide de stocker les employés dans une ArrayList. Vous pouvez vous aider du cours et de la Javadoc à l'adresse : java.sun.com puis API. La classe ArrayList se trouve dans le paquetage java.util.
1. Vous devez créer une liste (type ArrayList) et y stocker les objets associés à Pierre et Marie.
2. Afficher les noms des employés qui sont stockés dans la liste.
3. Afficher les salaires annuels des employés.
C. On veut maintenant stocker des informations sur les entreprises qui embauchent ces employés. Une entreprise est caractérisée par un nom, une adresse.
1. Ecrire la classe Entreprise. Créer l'entreprise ABC dont l'adresse est 99 impasse de java 75020 Paris.
2. Une entreprise peut embaucher plusieurs employés mais un employé travaille dans au plus une entreprise. Organiser le lien entre employé et entreprise. Faire en sorte que Pierre et Marie travaillent pour l'entreprise ABC.
3. Afficher les salaires des employés de l'entreprise ABC.
4. Créer une seconde entreprise qui embauchent 2 nouveaux employés (Julie et Michel). Afficher la masse salariale (somme des salaires annuels) de toutes les entreprises.
Programmation Java
TD N° 6
On veut gérer la gestion d'un caddie virtuel dans une application type "ecommerce". Pour cela, on va gérer des achats d'articles qui sont représentés
sous la forme d'objets. Un caddie est caractérisé par un nom client et une liste
de couples (article, quantité achetée).
Pour le moment, on vous demande de gérer les articles suivants :
1. de la mémoire vive (RAM) dont les caractéristiques sont : une
référence (interne au magasin), une marque, un prix unitaire, un type
et une capacité de stockage.
2. Des imprimantes dont les caractéristiques sont : une référence, une
marque, un prix unitaire, le type d'impression (laser, jet d'encre), la
vitesse d'impression et la couleur (booléen).
Il faut prendre en compte que le nombre d'articles va croître rapidement
dans l'application.
4. Proposer une organisation pour les classes de l'application. Cette
organisation permettra-t-elle de faire évoluer facilement la liste des
articles proposés ?
5. Implémenter les classes.
6. Réaliser un test simple avec une instance de Caddie, une instance de
Imprimante et une instance de Memoire.
7. Implémenter les méthodes qui permettront d'ajouter un article dans un
caddie, de supprimer un article d'un caddie, de connaître le montant
global d'un caddie.
8. Pour l'achat en grande quantité d'un article, le magasin propose des lots .
Ces derniers bénéficient de réductions de : 10% sur le prix unitaire si la
quantité est entre 10 et 49, 25% si la quantité est supérieure ou égale à
50. Ajouter une classe Lot permettant de représenter des lots d'articles.
Pour ajouter une instance de Lot dans le caddie, vous utiliserez la
syntaxe suivante (pour un lot de 10 mémoires): caddie.addArticle(new
Lot (new Memoire(...),10);
9. Tester avec des lots.
NB: Vous utiliserez une ArrayList pour stocker les articles d'un caddie.
Diagramme de classes de l'exercice Caddie virtuel
La classe Article (fichier Article.java)
public abstract class Article {
private String marque;
private String ref;
private double prixU;
public Article(String ref, double prixU, String marque) {
this.ref= ref; this.prixU = prixU; this.marque = marque;
}
/* Constructeur sans parametre qui va servir pour la contrusction
d'un Lot */
public Article() {
ref = new String("NC");
}
protected void setPrixU(double prix) {
prixU = prix;
}
protected void setMarque(String marque) {
this.marque = marque;
}
protected void setRef(String ref) {
this.ref = ref;
}
public String getFiche() {
String resultat = new String("Ref = " + ref + " Marque =
"+ marque + " prix unitaire = "+ prixU);
return resultat;
}
public double getPrixU() {
return prixU;
}
public String getRef() {
return ref;
}
public String getMarque() {
return marque;
}
}
La classe Memoire
public class Memoire extends Article {
private String type;
private String capacite;
public Memoire(String type, String capacite, String ref,
double prix, String marque) {
super(ref, prix, marque);
this.capacite = capacite;
this.type = type;
}
public String getFiche() {
String resultat = super.getFiche() + " Type = " + type +
" Capa = "+capacite;
return resultat;
}
}
La classe Imprimante
public class Imprimante extends Article {
private String typeImp;
private String vitesse;
private boolean couleur;
public Imprimante(String typeImp, String vitesse, boolean
couleur, String ref, double prix, String marque) {
super(ref, prix, marque);
this.vitesse = vitesse;
this.typeImp = typeImp;
this.couleur = couleur;
}
public String getFiche() {
String resultat = super.getFiche() + " Type impression =
" + typeImp + " Couleur = "+couleur + " Vitesse = " + vitesse;
return resultat;
}
}
La classe Lot
public class Lot extends Article {
private Article articleType;
private int quantite;
public Lot(Article articleAjoute, int quantite) {
this.quantite= quantite;
articleType = articleAjoute;
if (quantite>=10 && quantite<50)
setPrixU(articleType.getPrixU()*0.9*quantite);
else
if (quantite>=50)
setPrixU(articleType.getPrixU()*0.75*quantite);
else
setPrixU(articleType.getPrixU()*quantite);
setRef(articleType.getRef()+"-LOT");
setMarque(articleType.getMarque());
}
public String getFiche() {
String resultat = super.getFiche() + " Lot de " +
quantite;
return resultat;
}
}
La classe CaddieArrayList
import java.util.*;
public class CaddieArrayList {
private ArrayList listArticle = new ArrayList();
private String client;
public CaddieArrayList(String client) {
this.client= client;
}
public String getClient() {
return client;
}
public void setClient(String client) {
this.client = client;
}
public void addArticle(Article articleAjoute) {
listArticle.add(articleAjoute);
}
public void removeArticle(int position) {
if (position>=0 && position<listArticle.size())
listArticle.remove(position);
else
System.out.println("Erreur, position");
}
public Article getArticle(int position) {
if (listArticle.size()>position)
return (Article)listArticle.get(position);
return null;
}
public void getArticles() { Article article;
Iterator iterator = listArticle.iterator();
int i=1;
while (iterator.hasNext()) {
article = (Article) iterator.next();
System.out.println("Article # " + i + " : " +
article.getFiche());
i++;
}
}
public void getPrix() {
double prixGlobal = 0;
Article article;
Iterator iterator = listArticle.iterator();
while (iterator.hasNext() ) {
article = (Article) iterator.next();
prixGlobal += article.getPrixU();
}
System.out.println("Prix total du caddie = " + prixGlobal);
}
}
La classe CaddieALTest
public class CaddieALTest {
public static void main(String[] args) {
CaddieArrayList cadOne = new CaddieArrayList("Toto");
System.out.println("Caddie de " + cadOne.getClient());
System.out.println("Ajouter articles dans CadOne");
cadOne.addArticle(new
Memoire("SDRAM","128Mo","SDRAM001",99.90,"BestOne"));
cadOne.addArticle(new Imprimante("Laser","10
pages /minute",true,"Canon001",799.00,"Canon"));
System.out.println("Ajouter un lot dans CadOne");
cadOne.addArticle(new Lot(new
Memoire("SDRAM","256Mo","SDRAM002",199.90,"BestOne"),10));
cadOne.addArticle(new Lot(new
Memoire("SDRAM","256Mo","SDRAM002",199.90,"BestOne"),15));
cadOne.getArticles();
System.out.println("Supprime article de CadOne");
cadOne.removeArticle(2);
cadOne.getArticles();
cadOne.getPrix();
}
}
Résultat de l'exécution
Caddie de Toto
Ajouter articles dans CadOne
Ajouter un lot dans CadOne
Article # 1 : Ref = SDRAM001 Marque = BestOne prix unitaire = 99.9
Type = SDRAM Capa = 128Mo
Article # 2 : Ref = Canon001 Marque = Canon prix unitaire = 799.0 Type
impression = Laser Couleur = true Vitesse = 10 pages /minute
Article # 3 : Ref = SDRAM002-LOT Marque = BestOne prix unitaire =
1799.1 Lot de 10
Article # 4 : Ref = SDRAM002-LOT Marque = BestOne prix unitaire =
2698.65 Lot de 15
Supprime article de CadOne
Article # 1 : Ref = SDRAM001 Marque = BestOne prix unitaire = 99.9
Type = SDRAM Capa = 128Mo
Article # 2 : Ref = Canon001 Marque = Canon prix unitaire = 799.0 Type
impression = Laser Couleur = true Vitesse = 10 pages /minute
Article # 3 : Ref = SDRAM002-LOT Marque = BestOne prix unitaire =
2698.65 Lot de 15
Prix total du caddie = 3597.55
Programmation Java
TD N° 7
Vous programmerez en Java, le problème suivant. On considère le problème général consistant à résoudre une équation quelconque. Pour simplifier, n’importe quelle équation sera définie par un nom et par son nombre de solutions et par une méthode permettant de la résoudre. Les paramètres de l’équation dépendent du type de l’équation que l’on traite : par exemple, 2 paramètres pour une équation du premier degré, 3 pour une équation du second degré,…
4. Révision méthode virtuelle : Créer une classe "Equation" décrite par un nom, un nombre de solution et une méthode de résolution virtuelle Solve(). Créer alors deux sous­classes (Equation1D, Equation2D) permettant de traiter les équations du premier degré et les équations du second degré. Vous définirez les attributs propres à ces sous­classes. Ecrire enfin une classe "Calcul" avec une méthode "main().." dans laquelle vous testerez vos développements.
Considérons maintenant un cas simple permettant d’aborder les exceptions : la division par 0.
5. Une première approche consiste à laisser Java générer une exception associée à votre division par 0. Dans le cas d’une division entre 2 entiers, Java génére une exception de type "ArithmeticException". Modifier votre Classe "Calcul" en rajoutant les instructions "try.. catch" nécessaires (voir exemple de cours) pour générer vos propres traitements associés à cette exception notamment le fait de décrémenter le nombre de solutions. Ne pas oublier de déclarer les throws Exceptions dans les classes Equation1D, Equation2D. Tester enfin le cas de la division par 0 sur des nombres flottants : Java génére un nombre "Solution Infinity".
6. Une seconde approche consiste alors à "lever" vous­même une exception c’est­à­
dire vous testez les opérations de votre programme susceptibles de générer une division par 0 en créant vous­même une exception via une commande du type "if (condition) through new Exception("Message propre")dans le corps de la méthode posant problème. Les instructions "try.. catch" sont toujours nécessaires dans la classe appelante. Utiliser ces techniques pour toujours décrémenter le nombre de solutions.
Téléchargement