EXERCICES : Classe Inversion Tableau Posté par admin le 11/03/2010 09:06:32 (31 lectures)
Ecrire une classe Inversion Tableau
Solution
/* Auteur: Nicolas JANEY /*
[email protected] */ /* Fevrier 2005
*/ */
import java. java.io io.* .*; ; public class InversionTableau { static BufferedReader flux = new BufferedReader (new InputStreamReader (Sy Sys s tem te m.in in)) )); ; /* Fonction d'affichage de tous les entiers contenus /* dans un tableau d'entiers
*/ */
public static void affichageTableau( affichageTableau (in int t [] t) { int i; i; /* Pour toutes les valeurs d'indice 0 a t.length-1 inclus for ( i = 0 ; i < t.length ; i++ ) System. System .ou out t.println println( (t[i]) ]); ; } /* Fonction d'initialisat d'initialisation ion de tous les entiers /* contenus dans un tableau d'entiers /* avec une valeur tiree au sort entre 0 et max inclus
*/
*/ */ */
public static void initialisationTableau( initialisationTableau (in int t [] t,int max) max) { int i; i; /* Pour toutes les valeurs d'indice 0 a t.length-1 inclus */ for ( i = 0 ; i < t.length ; i++ ) { /* Initialisatio Initialisation n de t[i] avec un entier tire */ /* au hasard entre 0.0 (inclu) et max+1 (exclu) */ t[i] =(int) ((ma ((max x+1)* )*Math Math. .random random()); ()); } } /* Fonction d'inversion de l'ordre des entiers presents /* dans un tableau
*/ */
public static void inversionTableau( inversionTableau (in int t [] t) { int i; i; /* Definition d'une variable auxiliaire utilisee /* pour la permutation de deux autres variables int aux; aux; /* Pour les t.length/2 couples d'entiers a permuter for ( i = 0 ; i < t.length length/ /2 ; i++ ) { /* Permutation des valeurs d'indice i et t.length-1-i aux au x = t[i]; t[i] = t[t.length length-1-i]; t[t.length length-1-i] = au aux x; } } /* Fonction principale
*/ */ */ */
*/
public static void main( main(String [] args args) ) throws IOException { /* Definition, allocation et initialisatio initialisation n de 1 tableau */
/* de 7 entiers tires au hasard entre 0 et 100 */ int in t [] ta tab b = new in int t[7]; initialisationTableau (ta tab b,10 100 0); System. System .ou out t.println println( ("Le tableau 1 contient les valeurs suivantes:" ); /* Appel a la fonction d'affichage sur le tableau */ affichageTableau (ta tab b); System. System .ou out t.println println() (); ; /* Inversion du tableau tab */ inversionTableau (ta tab b); /* Nouvel appel a la fonction d'affichage sur le tableau */ affichageTableau (ta tab b); } }
EXERCICES : fonction d'affichage des valeurs Posté par admin le 11/03/2010 09:03:14 (19 lectures)
Ecrire en Java et valider une fonction d'affichage des valeurs contenues dans un tableau d'entiers.
Solution
/* Auteur: Nicolas JANEY /*
[email protected] */ /* Fevrier 2005
*/ */
import java. java.io io.* .*; ; public class AffichageTableau { static BufferedReader flux = new BufferedReader (new InputStreamReader (Sy Sys s tem te m.in in)) )); ; /* Fonction d'affichage de tous les entiers contenus /* dans un tableau d'entiers
*/ */
public static void affichageTableau( affichageTableau (in int t [] t) { int i; i; /* Pour toutes les valeurs d'indice 0 a t.length-1 inclus for ( i = 0 ; i < t.length ; i++ ) System. System .ou out t.println println( (t[i]) ]); ; } /* Fonction principale
*/
*/
public static void main( main(String [] args args) ) throws IOException { /* Definition et allocation de 1 tableau de 15 entiers */ int in t [] t1 = new in int t[15 15]; ]; System. System .ou out t.println println( ("Le tableau 1 contient les valeurs suivantes:" ); /* Appel a la fonction d'affichage sur le premier tableau */ affichageTableau (t1 t1); ); System. System .ou out t.println println() (); ; /* Definition et initialisat initialisation ion de 1 tableau de 6 entiers */ int in t [] t2 = { 1,,-1 1,3,,-5 5,7,9 }; System. System .ou out t.println println( ("Le tableau 2 contient les valeurs suivantes:" ); /* Appel a la fonction d'affichage sur le deuxieme tableau */
/* de 7 entiers tires au hasard entre 0 et 100 */ int in t [] ta tab b = new in int t[7]; initialisationTableau (ta tab b,10 100 0); System. System .ou out t.println println( ("Le tableau 1 contient les valeurs suivantes:" ); /* Appel a la fonction d'affichage sur le tableau */ affichageTableau (ta tab b); System. System .ou out t.println println() (); ; /* Inversion du tableau tab */ inversionTableau (ta tab b); /* Nouvel appel a la fonction d'affichage sur le tableau */ affichageTableau (ta tab b); } }
EXERCICES : fonction d'affichage des valeurs Posté par admin le 11/03/2010 09:03:14 (19 lectures)
Ecrire en Java et valider une fonction d'affichage des valeurs contenues dans un tableau d'entiers.
Solution
/* Auteur: Nicolas JANEY /*
[email protected] */ /* Fevrier 2005
*/ */
import java. java.io io.* .*; ; public class AffichageTableau { static BufferedReader flux = new BufferedReader (new InputStreamReader (Sy Sys s tem te m.in in)) )); ; /* Fonction d'affichage de tous les entiers contenus /* dans un tableau d'entiers
*/ */
public static void affichageTableau( affichageTableau (in int t [] t) { int i; i; /* Pour toutes les valeurs d'indice 0 a t.length-1 inclus for ( i = 0 ; i < t.length ; i++ ) System. System .ou out t.println println( (t[i]) ]); ; } /* Fonction principale
*/
*/
public static void main( main(String [] args args) ) throws IOException { /* Definition et allocation de 1 tableau de 15 entiers */ int in t [] t1 = new in int t[15 15]; ]; System. System .ou out t.println println( ("Le tableau 1 contient les valeurs suivantes:" ); /* Appel a la fonction d'affichage sur le premier tableau */ affichageTableau (t1 t1); ); System. System .ou out t.println println() (); ; /* Definition et initialisat initialisation ion de 1 tableau de 6 entiers */ int in t [] t2 = { 1,,-1 1,3,,-5 5,7,9 }; System. System .ou out t.println println( ("Le tableau 2 contient les valeurs suivantes:" ); /* Appel a la fonction d'affichage sur le deuxieme tableau */
affichageTableau (t2 t2); ); } } AffichageTableau .java Exercice 2 Ecrire en Java et valider une fonction de remplissage d 'un tableau d'entier d'entier avec des valeurs tirées au hasard entre 0 et 9. /* Auteur: Nicolas JANEY /*
[email protected] */ /* Fevrier 2005
*/ */
import java. java.io io.* .*; ; public class RemplissageHasardTableau { static BufferedReader flux = new BufferedReader (new InputStreamReader (Sy Sys s tem te m.in in)) )); ; /* Fonction d'affichage de tous les entiers contenus /* dans un tableau d'entiers
*/ */
public static void affichageTableau( affichageTableau (in int t [] t) { int i; i; /* Pour toutes les valeurs d'indice 0 a t.length-1 inclus for ( i = 0 ; i < t.length ; i++ ) System. System .ou out t.println println( (t[i]) ]); ; } /* Fonction d'initialisat d'initialisation ion de tous les entiers /* contenus dans un tableau d'entiers /* avec une valeur tiree au sort entre 0 et max inclus
*/
*/ */ */
public static void initialisationTableau( initialisationTableau (in int t [] t,int max) max) { int i; i; /* Pour toutes les valeurs d'indice 0 a t.length-1 inclus */ for ( i = 0 ; i < t.length ; i++ ) { /* Initialisatio Initialisation n de t[i] avec un entier tire */ /* au hasard entre 0.0 (inclu) et max+1 (exclu) */ t[i] =(int) ((ma ((max x+1)* )*Math Math. .random random()); ()); } } /* Fonction principale
*/
public static void main( main(String [] args args) ) throws IOException { /* Definition et allocation d'un tableau de 10 entiers */ /* tires au sort entre 0 et 5 */ int in t [] ta tab b = new in int t[10 10]; ]; initialisationTableau (ta tab b,5); System. System .ou out t.println println( ("Le tableau contient les valeurs suivantes:" ); /* Appel a la fonction d'affichage */ affichageTableau (ta tab b); } }
EXERCICES : gestion d'une bibliothèque Posté par admin le 11/03/2010 08:54:14 (164 lectures)
On veut modéliser la gestion d'une bibliothèque : on définira un certain nombre de classes : Main, Ouvrage, BiblioTab, Bibliotheque, Periodique, CD, Livre. Les livres auront comme propriétés : auteur, titre, éditeur ; les périodiques : nom, numéro, périodicité ; les CDs : titre, auteur. De plus tous les o uvrages auront une date d'emprunt (potentiellement nulle), une cote (le numéro par ordre de création). On implémentera également sur chaque objet une méthode toString() renvoyant toutes les informations sur l'ouvrage sous forme d'une chaîne de caractères.
La classe BiblioTab permettra de stocker dans une structure les livres (ajout et suppression, la suppression prenant en argument la cote de l'ouvrage). Elle aura également une méthode toString() affichant le nombres d'ouvrages, puis chaque ouvrage successivement. La classe Bibliotheque sera simplement une version abstraite déclarant les mêmes méthodes que BiblioTab mais sans les implémenter. BiblioTab héritera de Bibliotheque.
La classe Main ne contiendra que la méthode main et testera la bibliothèque en y insérant et supprimant quelques ouvrages, puis en affichant le contenu de la bibliothèque.
1. Représentez les différentes classes dans un graphe d'héritage. On mettra en évidence pour chaque classe les méthodes et les champs qu'elle définit, redéfinit ou hérite. On souhaite que tous les champs soient déclarés privés et que l'on puisse y accéder de l'extérieur que par des méthodes. 2. Implémentez les classes ci-dessus. Pour la classe BiblioTab on utilisera un tableau de longueur suffisante (on vérifiera quand même à chaque opération d'insertion que l'on ne dépasse pas les bornes du tableau). Quel sont les inconvénients de cette méthode ?
Dans ce qui suit, on veut implémenter une deuxième version de la bibliothèque, que l'on appellera BiblioList et qui héritera également de Bibliotheque. Cette nouvelle implémentation utilisera la classe LinkedList définie dans l'API Java standard.
1. Modifiez le minimum de choses dans la classe Main pour permettre l'utilisation de BiblioList. 2. En utilisant les méthodes boolean add(Object o) qui permet d'ajouter un objet dans la liste, boolean remove(Object o) Object get(int index) et int size(), implémentez la classe BiblioList. Vous trouverez la documentation complète de la classe LinkedList en http://www.pps.jussieu.fr/~baro/e http://www .pps.jussieu.fr/~baro/ensei nsei ... /LBI/Java/Li /LBI/Java/LinkedList.html nkedList.html . Vous devrez ajouter au début du fichier BiblioList.java la commande import java.util.* ;
Solution
// Ouvrage.java public abstract class Ouvrage { private static int nombre ; private int cote ; String dateEmprunt ; public int cote() cote() {
return cote ; } public String toString() toString() { String res = "[ "[" " + cote + "] "; if( if (dateEmprunt != null null) ) return re res s + "emprunte le " + dateEmprunt ; else return re res s + "disponible" ; } public String dateEmprunt() dateEmprunt () { return dateEmprunt ; } public void setDateEmprunt( setDateEmprunt (String dateEmprunt) dateEmprunt ) { this. this .dateEmprunt = dateEmprunt ; } public static int getNombre() getNombre() { return nombre ; } public Ouvrage Ouvrage() () { cote = nombre nombre++ ++ ; } } // Livre.java public class Livre private String private String private String
extends Ouvrage { titre ; auteur ; editeur ;
public void setTitre( setTitre(String titre) titre) { this.titre = titre ; this. } public String titre() titre() { return titre ; } public void setAuteur( setAuteur (String auteur) auteur) { this. this .auteur = auteur ; } public String auteur() auteur() { return auteur ; } public void setEditeur( setEditeur(String editeur) editeur) { this.editeur = editeur ; this. } public String editeur() editeur () { return editeur ; } public String toString() toString() { return super super. .toString toString() () + " " + titre + " " + auteur + " " + editeur ; } public Livre Livre( (String titre, titre, String auteur, auteur, String editeur) editeur ) {
this.titre = titre ; this.auteur = auteur ; this.editeur = editeur ; } } // Biblio.java public abstract class Biblio { public abstract void add(Ouvrage o) ; public abstract void remove(int cote) ; public abstract String toString() ; public abstract int number() ; } // BiblioList.java import java.util.* ; public class BiblioList extends Biblio { List l = new LinkedList() ; public void add(Ouvrage o) { l.add(o) ; } public void remove(int cote) { for(int i=0 ; i
b.add(o3) ; b.add(o4) ; System.out.println(b.toString()) ; o2.setDateEmprunt ("31/10/2001") ; b.remove(o1.cote()) ; b.remove(o3.cote()) ; System.out.println(b.toString()) ; } }
EXERCICES : Employe Posté par admin le 11/03/2010 08:07:16 (41 lectures)
Ecrivez une classe abstraite Employe avec les attributs suivants:
* nom: Le nom de famille de l'employé, * prenom: Le prénom de l' employé.
La classe Employe doit disposer des constructeurs suivants:
* Employe(), * Employe(nom, prenom).
La classe Employe doit contenir des accesseurs et mutateurs pour les différents attributs et les méthodes suivantes:
* toString(): retourne une représentation d'un employé, * gains(): retourne le salaire (abstraite).
Ecrivez une classe Patron héritant de Employé avec les attributs suivants:
* salaire: Le salaire mensuel.
La classe Patron doit disposer des constructeurs suivants:
* Patron(), * Patron(nom, prenom, salaire).
La classe Patron doit contenir des accesseurs et mutateurs pour les différents attributs et les méthodes suivantes:
* toString(): retourne une représentation du patron, * gains(): retourne le salaire du patron.
Ecrivez une classe TravailleurCommission héritant de Employé avec les attributs suivants:
* salaire: Le salaire mensuel de base, * commission: Montant de la commission par article vendus, * quantite: nombre d'articles vendus par mois.
La classe TravailleurCommission doit disposer des constructeurs suivants:
* TravailleurCommission(), * TravailleurCommission(nom, prenom, salaire, c ommision).
La classe TravailleurCommission doit contenir des accesseurs et mutateurs pour les différents attributs et les méthodes suivantes:
* toString(): retourne une représentation du travailleur à la commission, * gains(): retourne le salaire du travailleur à la commission.
Ecrivez une classe TravailleurHoraire héritant de Employé avec les attributs suivants:
* retribution: La rétrubution horaire,
* heures: Le nombre d'heures de travail par mois.
La classe TravailleurHoraire doit disposer des c onstructeurs suivants:
* TravailleurHoraire(), * TravailleurHoraire(nom, prenom, retribution).
La classe TravailleurHoraire doit contenir des accesseurs et mutateurs pour les différents attributs et les méthodes suivantes:
* toString(): retourne une représentation du travailleur horaire, * gains(): retourne le salaire du travailleur horaire.
Ecrivez aussi une classe de testEmploye afin de tester les classes. Utilisez les propriétés du polymorphisme.
Solution
/** *
Classe représentant un employé.
* @author Sébastien ESTIENNE. */ public abstract class Employe { // Le nom de l'employé. protected String nom; // Le prénom de l'employé. protected String prenom; /** *
Constructeur par défaut.
*/ public Employe() { this("", ""); }
/** *
Constructeur d'employé avec un nopm et un prénom spécifiés.
* @param nom Le nom de l'employé. * @param prenom Le prénom de l'employé. */
protected Employe(String nom, String prenom) { this.setNom(nom); this.setPrenom(prenom); } /** *
Calcule le salaire de l'employé par mois.
* @return Retourne le salaire de l'employé par mois. */ public abstract double gains(); /** *
Retourne le nom de l'employé.
* @return Renvoie le nom de l'employé. */ public String getNom() { return this.nom; } /** *
Modifie le nom de l'employé.
* @param nom Le nom de l'employé. */ public void setNom(String nom) { this.nom = nom; } /** *
Retourne le prénom de l'employé.
* @return Renvoie le prénom de l'employé. */ public String getPrenom() { return this.prenom; }
/** *
Modifie le prénom de l'employé.
* @param prenom Le prénom de l'employé. */ public void setPrenom(String prenom) { this.prenom = prenom; } /** *
Retourne une représentation de l'employé.
* @return Renvoie une représentation de l'employé. */ @Override public String toString() {
return "Employé[nom:" + this.getNom() + ", prénom:" + this.getPrenom( ) + "]"; } }
/* * Fichier: Patron.java * Crée le: 30 janvier 2007. * Auteurs: Sébastien ESTIENNE. * SiteWeb: http://www.prog-info.org/ * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 021101301 USA */ package chapitre8.employe;
/** *
Classe représentant un patron.
* @author Sébastien ESTIENNE. */ public class Patron extends Employe { // Le salaire mensuel du patron. protected double salaire;
/** *
Constructeur par défaut.
*/ public Patron() { this("", "", 0.0); } /** *
Constructeur de patron avec un nom, un prénom et un salaire spécif iés.
* @param nom Le nom du patron. * @param prenom Le prénom du patron. * @param salaire Le salaire du patron. */
public Patron(String nom, String prenom, double salaire) { super(nom, prenom); this.setSalaire(salaire); } /** *
Calcule le salaire de l'employé par mois.
* @return Retourne le salaire de l'employé par mois. */ @Override public double gains() { return this.getSalaire(); } /** *
Retourne le salaire mensuel du patron.
* @return Renvoie le salaire mensuel du patron. */ public double getSalaire() { return this.salaire; } /** *
Modifie le salaire mensuel du patron.
* @param salaire Le salaire mensuel du patron. */ public void setSalaire(double salaire) { if(salaire < 0) this.salaire = 0.0; else this.salaire = salaire; } /** *
Retourne une représentation du patron.
* @return Renvoie une représentation du patron. */ @Override public String toString() { return "Patron[nom:" + this.getNom() + ", prénom:" + this.getPrenom() + ", salaire:" + this.gains() + "]"; } }
/* * Fichier: TravailleurCommission.java * Crée le: 30 janvier 2007.
* Auteurs: Sébastien ESTIENNE. * SiteWeb: http://www.prog-info.org/ * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 021101301 USA */ package chapitre8.employe;
/** *
Classe représentant un travailleur à la commision.
* @author Sébastien ESTIENNE. */ public class TravailleurCommission extends Employe { // Le salaire mensuel de base. protected double salaire; // Le montant de la commission par article vendus. protected double commission; // Le nombre d'articles vendus par mois. protected int quantite;
/** *
Constructeur par défaut.
*/ public TravailleurCommission () { this("", "", 0.0, 0.0); } /** *
Constructeur de travailleur à la commission avec un nom, un prénom , un salaire et la * commision spécifiés.
* @param nom Le nom du travailleur à la commission. * @param prenom Le prénom du travailleur à la commission. * @param salaire Le salaire du travailleur à la commission. * @param commission La commission du travailleur à la commission. */ TravailleurCommission (String nom, String prenom, double salaire, double commission) { super(nom, prenom);
this.setSalaire(salaire); this.setCommission(commission); }
/** *
Calcule le salaire de l'employé par mois.
* @return Retourne le salaire de l'employé par mois. */ @Override public double gains() { return this.getSalaire() + this.getQuantite() * this.getCommission(); } /** *
Retourne le montant de la commission par article vendus.
* @return Renvoie le montant de la commission par article vendus. */ public double getCommission() { return this.commission; } /** *
Modifie montant de la commission par article vendus.
* @param commission Le montant de la commission par article vendus. */ public void setCommission(double commission) { if(commission < 0.0) this.commission = 0.0; else this.commission = commission; } /** *
Retourne le nombre d'articles vendus par mois.
* @return Renvoie le nombre d'articles vendus par mois. */ public int getQuantite() { return this.quantite; }
/** *
Modifie le nombre d'articles vendus par mois..
* @param quantite Le nombre d'articles vendus par mois. */ public void setQuantite(int quantite) { if(quantite < 0) this.quantite = 0; else this.quantite = quantite; }
/** *
Retourne le salaire mensuel de base.
* @return Renvoie le salaire mensuel de base.. */ public double getSalaire() { return this.salaire; } /** *
Modifie le salaire mensuel de base.
* @param salaire Le salaire mensuel de base. */ public void setSalaire(double salaire) { if(salaire < 0.0) this.salaire = 0.0; else this.salaire = salaire; }
/** *
Retourne une représentation du travailleur à la commission.
* @return Renvoie une représentation du travailleur à la commission. */ @Override public String toString() { return "TravailleurCommission[nom:" + this.getNom() + ", prénom:" + t his.getPrenom() + ", salaire:" + this.gains() + "]"; } }
/* * * * * * * * * * * * * * * * * * *
Fichier: TravailleurHoraire.java Crée le: 30 janvier 2007. Auteurs: Sébastien ESTIENNE. SiteWeb: http://www.prog-info.org/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-
1301 */
USA
package chapitre8.employe;
/** *
Classe représentant un travailleur à la commision.
* @author Sébastien ESTIENNE. */ public class TravailleurHoraire extends Employe { // La rétrubution horaire. protected double retribution; // Le nombre d'heures de travail par mois. protected int heures;
/** *
Constructeur par défaut.
*/ public TravailleurHoraire () { this("", "", 0.0); } /** *
Constructeur de travailleur horaire avec un nom, un prénom, une ré tribution horaire * spécifiés.
* @param nom Le nom du travailleur horaire. * @param prenom Le prénom du travailleur horaire. * @param retribution La rétrubution horaire. */ TravailleurHoraire (String nom, String prenom, double retribution) { super(nom, prenom); this.setRetribution (retribution); }
/** *
Calcule le salaire de l'employé par mois.
* @return Retourne le salaire de l'employé par mois. */ @Override public double gains() { return this.getHeures() * this.getRetribution (); }
/** *
Retourne le nombre d'heures de travail par mois.
* @return Renvoie le nombre d'heures de travail par mois. */ public int getHeures() {
return this.heures; }
/** *
Modifie le nombre d'heures de travail par mois.
* @param heures Le nombre d'heures de travail par mois. */ public void setHeures(int heures) { if(heures < 0) this.heures = 0; else this.heures = heures; } /** *
Retourne la rétrubution horaire.
* @return Renvoie la rétrubution horaire. */ public double getRetribution() { return this.retribution; } /** *
Modifie la rétrubution horaire.
* @param retribution La rétrubution horaire. */ public void setRetribution(double retribution) { if(retribution < 0.0) this.retribution = 0.0; else this.retribution = retribution; } /** *
Retourne une représentation du travailleur horaire.
* @return Renvoie une représentation du travailleur horaire. */ @Override public String toString() { return "TravailleurHoraire[nom:" + this.getNom() + ", prénom:" + this .getPrenom() + ", salaire:" + this.gains() + "]"; } }
/* * Fichier: TestEmploye.java * Crée le: 30 janvier 2007. * Auteurs: Sébastien ESTIENNE.
* SiteWeb: http://www.prog-info.org/ * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 021101301 USA */ package chapitre8.employe;
/** *
Classe de test pour les classes Employe, Patron, TravailleurCommissio n, TravailleurHoraire.
* @author Sébastien ESTIENNE. */ public class TestEmploye { /** *
Débute l'exécution du test.
* @param args Les paramètres de la ligne de commande. */ public static void main(String[] args) { // Employe. Employe emp; // Patron. Patron p = new Patron("Paul", "MARTIN", 6500); emp = p; System.out.println(emp); // TravailleurCommission. TravailleurCommission tc = new TravailleurCommission("Jean", "DUPONT" , 3000, 15); tc.setQuantite(60); emp = tc; System.out.println(emp); // TravailleurHoraire. TravailleurHoraire th = new TravailleurHoraire ("Luc", "THOMAS", 12); th.setRetribution (150); emp = tc; System.out.println(th); } }
EXERCICES : Figure Posté par admin le 11/03/2010 08:06:25 (35 lectures)
Ecrivez une classe abstraite Figure avec les attributs suivants:
* nom: Le nom de la figure.
La classe Figure doit contenir des accesseurs et mutateurs pour les différents attributs et les méthodes suivantes:
* aire(): L'aire de la figure (abstraite), * toString(): Donne une représentation de la figure.
Ecrivez un classe Disque héritant de Figure avec les attributs suivants:
* centre: Le centre du disque, * rayon: Le rayon du disque.
La classe Disque doit disposer des constructeurs suivants:
* Disque(), * Disque(centre, rayon).
La classe Disque doit contenir des accesseurs et mutateurs pour les différents attributs et les méthodes suivantes:
* aire(): Donne l'aire du disque, * toString(): Donne une représentation du Disque.
Ecrivez un classe Rectangle héritant de Figure avec les attributs suivants:
* longueur: La longueur du rectangle, * largeur: La largeur du r ectangle.
La classe Rectangle doit disposer des constructeurs suivants:
* Rectangle(), * Rectangle(longueur, largeur).
La classe Rectangle doit contenir des accesseurs et mutateurs pour les différents attributs et les méthodes suivantes:
* aire(): Donne l'aire du rectangle, * toString(): Donne une représentation du Rectangle.
Ecrivez aussi une classe de testFigure afin de tester les classes. Utilisez les propriétés du polymorphisme.
Solution
/** *
Classe représentant une figure.
* @author Sébastien ESTIENNE. */ public abstract class Figure { // Le nom de la figure. protected String nom;
/** *
Constructeur par défaut.
*/ public Figure() { this("Figure"); }
/** *
Constructeur de figure avec un nom spécifié.
* @param nom Le nom de la figure. */ protected Figure(String nom) { this.setNom(nom); }
/** *
Retourne le nom de la figure.
* @return Renvoie le nom de la figure.
*/ public String getNom() { return this.nom; } /** *
Modifie le nom de la figure.
* @param nom Le nom de la figure. */ public void setNom(String nom) { this.nom = nom; } /** *
Calcule l'aire de la figure.
* @return Retourne l'aire de la figure. */ public abstract double aire(); /** *
Retourne une représentation de la figure.
* @return Renvoie une représentation de la figure. */ @Override public String toString() { return this.getNom(); } }
/* * Fichier: Disque.java * Crée le: 30 janvier 2007. * Auteurs: Sébastien ESTIENNE. * SiteWeb: http://www.prog-info.org/ * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 021101301 USA */
package chapitre8.figure;
import java.awt.geom.Point2D;
/** *
Classe représentant un disque.
* @author Sébastien ESTIENNE. */ public class Disque extends Figure { // Le centre du disque. protected Point2D.Double centre; // Le rayon du disque. protected double rayon;
/** *
Constructeur par défaut.
*/ public Disque() { this(new Point2D.Double(0.0, 0.0), 0); }
/** *
Constructeur de disque avec un nom, un centre et un rayon spécifié .
* @param centre Le centre du disque. * @param rayon Le rayon du disque. */ public Disque(Point2D.Double centre, double rayon) { super("Disque"); this.setCentre((Point2D.Double) centre.clone()); this.setRayon(rayon); }
/** *
Calcule l'aire de la figure.
* @return Retourne l'aire de la figure. */ @Override public double aire() { return 2 * Math.PI * this.getRayon(); }
/** *
Retourne le centre du disque.
* @return Renvoie le centre du disque. */ public Point2D.Double getCentre() {
return this.centre; }
/** *
Modifie le centre du disque.
* @param centre Le centre du disque. */ public void setCentre(Point2D.Double centre) { this.centre = centre; } /** *
Retourne le rayon du disque.
* @return Renvoie Le rayon du disque. */ public double getRayon() { return this.rayon; } /** *
Modifie le rayon du disque.
* @param rayon Le rayon du disque. */ public void setRayon(double rayon) { if(rayon < 0.0) this.rayon = 0.0; else this.rayon = rayon; }
/** *
Retourne une représentation du disque.
* @return Renvoie une représentation du disque. */ @Override public String toString() { return this.getNom() + "[centre:(" + this.getCentre().getY() + "," + this.getCentre().getX() + "), rayon:" + this.getRayon() + "]" ; } }
/* * * * * * *
Fichier: Rectangle.java Crée le: 30 janvier 2007. Auteurs: Sébastien ESTIENNE. SiteWeb: http://www.prog-info.org/ This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 021101301 USA */ package chapitre8.figure;
/** *
Classe représentant un rectangle.
* @author Sébastien ESTIENNE. */ public class Rectangle extends Figure { // La longueur du rectangle. protected double longueur; // La largeur du rectangle. protected double largeur;
/** *
Constructeur par défaut.
*/ public Rectangle() { this(0.0, 0.0); } /** *
Constructeur de rectangle avec une longueur et une largeur spécifi ées.
* @param longueur La longueur du rectangle. * @param largeur La largeur du rectangle. */ public Rectangle(double longueur, double largeur) { super("Rectangle"); this.setLongueur(longueur); this.setLargeur(largeur); }
/** *
Calcule l'aire de la figure.
* @return Retourne l'aire de la figure. */ @Override public double aire()
{ return this.getLongueur() * this.getLargeur(); }
/** *
Retourne la largeur du rectangle.
* @return Renvoie la largeur du rectangle. */ public double getLargeur() { return this.largeur; }
/** *
Modifie la largeur du rectangle.
* @param largeur La largeur du rectangle. */ public void setLargeur(double largeur) { if(largeur < 0.0) this.largeur = 0.0; else this.largeur = largeur; } /** *
Retourne la longueur du rectangle.
* @return Renvoie la longueur du rectangle. */ public double getLongueur() { return this.longueur; }
/** *
Modifie la longueur du rectangle.
* @param longueur La longueur du rectangle. */ public void setLongueur(double longueur) { if(longueur < 0.0) this.longueur = 0.0; else this.longueur = longueur; }
/** *
Retourne une représentation du rectangle.
* @return Renvoie une représentation du rectangle. */ @Override public String toString() { return this.getNom() + "[longueur:" + this.getLongueur() + ", largeur :" + this.getLargeur() + "]";
} }
/* * Fichier: TestFigure.java * Crée le: 30 janvier 2007. * Auteurs: Sébastien ESTIENNE. * SiteWeb: http://www.prog-info.org/ * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 021101301 USA */
package chapitre8.figure; import java.awt.geom.Point2D; /** *
Classe de test pour les classes Figure, Disque et Rectangle.
* @author Sébastien ESTIENNE. */ public class TestFigure { /** *
Débute l'exécution du test.
* @param args Les paramètres de la ligne de commande. */ public static void main(String[] args) { // Une figure. Figure fig; // Disque. Disque d = new Disque(new Point2D.Double(3.1, 5.7), 2.5); fig = d; System.out.println(fig); System.out.println("Aire: " + fig.aire()); // Rectangle. Rectangle r = new Rectangle(7.0, 3.0); fig = r; System.out.println(fig); System.out.println("Aire: " + fig.aire());
} }
EXERCICES : Batiment Posté par admin le 11/03/2010 08:05:28 (51 lectures)
Ecrivez une classe Bâtiment avec les attributs suivants:
* adresse.
La classe Bâtiment doit disposer des constructeurs suivants:
* Batiment(), * Batiment(adresse).
La classe Bâtiment doit contenir des accesseurs et mutateurs pour les différents attributs. La classe Bâtiment doit contenir une méthode toString() donnant une représentation du Bâtiment.
Ecrivez une classe Maison héritant de Bâtiment avec les attributs suivants:
* nbPieces: Le nombre de pièces de la maison.
La classe Maison doit disposer des constructeurs suivants:
* Maison(), * Maison(adresse, nbPieces).
La classe Maison doit contenir des accesseurs et mutateurs pour les différents attributs. La classe Maison doit contenir une méthode
toString() donnant une représentation de la Maison.
Ecrivez une classe Immeuble héritant de Bâtiment avec les attributs suivants:
* nbAppart: Le no mbre d'appartements de l'immeuble.
La classe Immeuble doit disposer des constructeurs suivants:
* Immeuble(), * Immeuble(adresse, nbAppart).
La classe Immeuble doit contenir des accesseurs et mutateurs pour les différents attributs. La classe Immeuble doit contenir un e méthode toString() donnant une représentation de l'Immeuble.
Ecrivez aussi une classe de testBatiment afin de tester les classes.
Solution
/** *
Classe représentant un bâtiment.
* @author Sébastien ESTIENNE. */ public class Batiment { // L'adresse du bâtiment. protected String adresse;
/** *
Constructeur par défaut.
*/ public Batiment() { this(""); }
/** *
Constructeur de bâtiment avec une adresse spécifiée.
* @param adresse */ public Batiment(String adresse) { this.setAdresse(adresse); }
/** *
Retourne l'adresse du bâtiment.
* @return Renvoie l'adresse du bâtiment. */ public String getAdresse() { return this.adresse; }
/** *
Modifie l'adresse du bâtiment.
* @param adresse L'adresse du bâtiment. */ public void setAdresse(String adresse) { this.adresse = adresse; }
/** *
Retourne une représentation d'un bâtiment.
* @return Renvoie une représentation d'un bâtiment. */ @Override public String toString() { return "Bâtiment[adresse:" + this.getAdresse() + "]"; } }
/* * Fichier: Maison.java * Crée le: 29 janvier 2007. * Auteurs: Sébastien ESTIENNE. * SiteWeb: http://www.prog-info.org/ * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 021101301 USA */ package chapitre8.batiment;
/** *
Classe représentant une maison.
* @author Sébastien ESTIENNE. */ public class Maison extends Batiment { // Le nombre de pièces de la maison. protected int nbPieces; /** *
Constructeur par défaut.
*/ public Maison() { this("", 0); } /** *
Constructeur de maison avec une adresse et un nombre de pièces spé cifiés.
* @param adresse L'adresse de la maison. * @param nbPieces Le nombre de pièces de la maison. */ public Maison(String adresse, int nbPieces) { super(adresse); this.setNbPieces(nbPieces); } /** *
Retourne le nombre de pièces de la maison.
* @return Renvoie le nombre de pièces de la maison. */ public int getNbPieces() { return this.nbPieces; } /** *
Modifie le nombre de pièces de la maison.
* @param nbPieces Le nombre de pièces de la maison. */ public void setNbPieces(int nbPieces) { if(nbPieces < 0) this.nbPieces = 0; else this.nbPieces = nbPieces; } /** *
Retourne une représentation d'une maison.
* @return Renvoie une représentation d'une maison. */ @Override public String toString() { return "Maison[adresse:" + this.getAdresse() + ", nbPieces:" + this.g etNbPieces() + "]"; } }
/* * Fichier: Immeuble.java * Crée le: 29 janvier 2007. * Auteurs: Sébastien ESTIENNE. * SiteWeb: http://www.prog-info.org/ * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 021101301 USA */ package chapitre8.batiment;
/** *
Classe représentant un immeuble.
* @author Sébastien ESTIENNE. */ public class Immeuble extends Batiment { // Le nombre d'appartements de l'immeuble. protected int nbAppart; /** *
Constructeur par défaut.
*/ public Immeuble() { this("", 0); }
/** *
Constructeur d'Immeuble avec une adresse et un nombre d'appartemen t spécifiés.
* @param adresse L'adresse de l'immeuble. * @param nbAppart Le nombre d'appartements de l'immeuble. */ public Immeuble(String adresse, int nbAppart) { super(adresse); this.setNbAppart(nbAppart); }
/** *
Retourne le nombre d'appartements de l'immeuble.
* @return Renvoie le nomvre d'appartements de l'immeuble. */ public int getNbAppart() { return this.nbAppart; } /** *
Modifie le nombre d'appartements de l'immeuble.
* @param nbAppart Le nombre d'appartements de l'immeuble. */ public void setNbAppart(int nbAppart) { if(nbAppart < 0) this.nbAppart = 0; else this.nbAppart = nbAppart; }
/** *
Retourne une représentation d'un immeuble.
* @return Renvoie une représentation d'un immeuble. */ @Override public String toString() { return "Immeuble[adresse:" + this.getAdresse() + ", nbAppart:" + this .getNbAppart() + "]"; } }
/* * Fichier: Immeuble.java * Crée le: 29 janvier 2007. * Auteurs: Sébastien ESTIENNE. * SiteWeb: http://www.prog-info.org/ * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 021101301 USA
*/ package chapitre8.batiment;
/** *
Classe représentant un immeuble.
* @author Sébastien ESTIENNE. */ public class Immeuble extends Batiment { // Le nombre d'appartements de l'immeuble. protected int nbAppart;
/** *
Constructeur par défaut.
*/ public Immeuble() { this("", 0); }
/** *
Constructeur d'Immeuble avec une adresse et un nombre d'appartemen t spécifiés.
* @param adresse L'adresse de l'immeuble. * @param nbAppart Le nombre d'appartements de l'immeuble. */ public Immeuble(String adresse, int nbAppart) { super(adresse); this.setNbAppart(nbAppart); }
/** *
Retourne le nombre d'appartements de l'immeuble.
* @return Renvoie le nomvre d'appartements de l'immeuble. */ public int getNbAppart() { return this.nbAppart; } /** *
Modifie le nombre d'appartements de l'immeuble.
* @param nbAppart Le nombre d'appartements de l'immeuble. */ public void setNbAppart(int nbAppart) { if(nbAppart < 0) this.nbAppart = 0; else this.nbAppart = nbAppart; }
/** *
Retourne une représentation d'un immeuble.
* @return Renvoie une représentation d'un immeuble. */ @Override public String toString() { return "Immeuble[adresse:" + this.getAdresse() + ", nbAppart:" + this .getNbAppart() + "]"; } }
EXERCICES : Parallélogramme Posté par admin le 11/03/2010 08:04:43 (30 lectures)
Ecrivez une classe Point avec les attributs suivants:
* x: L'abscisse du point, * y: L'ordonnée du point.
La classe Point doit disposer des constructeurs suivants:
* Point(), * Point(x, y).
La classe Point doit contenir les accesseurs et mutateurs et aussi une méthode toString() donnant une représentation du Point.
Ecrivez une classe Rectangle héritant de Point avec les attributs suivants:
* longueur: La longueur du rectangle, * largeur: La largeur du r ectangle.
La classe Rectangle doit disposer des constructeurs suivants:
* Rectangle(), * Point(x, y, longueur, largeur).
La classe Rectangle doit contenir des accesseurs et mutateurs et aussi les méthodes suivantes:
* aire(): Donne l'aire du rectangle, * toString(): Donne une représentation du Rectangle (surcharge).
Ecrivez une classe Parallélogramme héritant de Rectangle avec les attributs suivants:
* hauteur: La hauteur du parallélogramme.
La classe Parallélogramme doit disposer des constructeurs suivants:
* Parallelogramme(), * Parallelogramme(x, y, longueur, largeur, hauteur).
La classe Parallélogramme doit contenir des accesseurs et mutateurs et aussi les les méthodes suivantes:
* aire(): Donne l'aire du parallélogramme (surcharge), * volume(): Donne le volume du parallélogramme, * toString(): Donne une représentation du Parallélogramme (surcharge).
Ecrivez aussi une classe de testParallelogramme afin de tester les classes.
Solution
/** *
Classe représentant un point.
* @author Sébastien ESTIENNE. */ public class Point { // L'abscisse du point. protected double x; // L'ordonnée du point. protected double y;
/** *
Constructeur par défaut.
*/ public Point() { this(0.0, 0.0); }
/** *
Constructeur de Point avec l'abscisse et l'ordonnée spécifiés.
* @param x L'abscisse du point. * @param y L'ordonnée du point. */ public Point(double x, double y) { this.setX(x); this.setY(y); }
/** *
Retourne l'abscisse du point.
* @return Renvoie l'abscisse du point. */ public double getX() { return this.x; }
/** *
Modifie l'abscisse du point.
* @param x L'abscisse du point. */ public void setX(double x) { this.x = x; } /** *
Retourne l'ordonnée du point.
* @return Renvoie l'ordonnée du point. */ public double getY() { return this.y; }
/** *
Modifie l'ordonnée du point.
* @param y L'ordonnée du point. */ public void setY(double y) { this.y = y; } /** *
Retourne une représenation du point.
* @return Renvoie une représenation du point. */ @Override public String toString() { return "Point[" + this.getX() + ", " + this.getY() + "]"; } }
/* * Fichier: Rectangle.java * Crée le: 29 janvier 2007. * Auteurs: Sébastien ESTIENNE. * SiteWeb: http://www.prog-info.org/ * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 021101301 USA */ package chapitre8.parallelogramme ;
/** *
Classe représentant un rectangle.
* @author Sébastien ESTIENNE. */ public class Rectangle extends Point { // La longueur du rectangle. protected double longueur;
// La largeur du rectangle. protected double largeur;
/** *
Constructeur par défaut.
*/ public Rectangle() { this(0.0, 0.0, 0.0, 0.0); } /** *
Constructeur de rectangle avec l'abscisse, l'ordonnée, la longueur et la largeur * spécifiés.
* @param x L'abscisse de la position du rectangle. * @param y L'ordonnée de la position du rectangle. * @param longueur La longueur du rectangle. * @param largeur La largeur du rectangle. */ public Rectangle(double x, double y, double longueur, double largeur) { super(x, y); this.setLongueur(longueur); this.setLargeur(largeur); }
/** *
Retourne la largeur du rectangle.
* @return Renvoie la largeur du rectangle. */ public double getLargeur() { return this.largeur; } /** *
Modifie la largeur du rectangle.
* @param largeur La largeur du rectangle. */ public void setLargeur(double largeur) { if(largeur < 0.0) this.largeur = 0.0; else this.largeur = largeur; } /** *
Retourne la longueur du rectangle.
* @return Renvoie la longueur du rectangle. */ public double getLongueur() { return this.longueur;
}
/** *
Modifie la longueur du rectangle.
* @param longueur La longueur du rectangle. */ public void setLongueur(double longueur) { if(longueur < 0.0) this.longueur = 0.0; else this.longueur = longueur; }
/** *
Calcule l'aire du rectangle.
* @return Retourne l'aire du rectangle. */ public double aire() { return this.getLongueur() * this.getLargeur(); }
/** *
Retourne une représentation du rectangle.
* @return Renvoie une représentation du rectangle. */ @Override public String toString() { return "Rectangle[position:(" + this.getX() + ", " + this.getY() + ") , longueur:" + this.getLongueur() + ", largeur:" + this.getLargeur() + "]"; } }
/* * * * * * * * * * * * * * * * * *
Fichier: Parallelogramme.java Crée le: 29 janvier 2007. Auteurs: Sébastien ESTIENNE. SiteWeb: http://www.prog-info.org/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 1301 USA */
02110-
package chapitre8.parallelogramme ;
/** *
Classe représentant un parallélogramme.
* @author Sébastien ESTIENNE. */ public class Parallelogramme extends Rectangle { // La hauteur du parallélogramme. protected double hauteur; /** *
Constructeur par défaut.
*/ public Parallelogramme () { this(0.0, 0.0, 0.0, 0.0, 0.0); } /** *
Constructeur de parallélogramme avec l'abscisse, l'ordonnée, la lo ngueur, la largeur et la * hauteur spécifiés.
* @param x L'abscisse de la position du parallélogramme. * @param y L'ordonnée de la position du parallélogramme. * @param longueur La longueur du parallélogramme. * @param largeur La largeur du parallélogramme. * @param hauteur La hauteur du parallélogramme. */ public Parallelogramme (double x, double y, double longueur, double large ur, double hauteur) { super(x, y, longueur, largeur); this.setHauteur(hauteur); }
/** *
Retourne la hauteur du parallélogramme.
* @return Renvoie la hauteur du parallélogramme. */ public double getHauteur() { return this.hauteur; }
/** *
Modifie la hauteur du parallélogramme.
* @param hauteur La hauteur du parallélogramme. */ public void setHauteur(double hauteur) {
if(hauteur < 0.0) this.hauteur = 0.0; else this.hauteur = hauteur; } /** *
Calcule l'aire du parallélogramme.
* @return Retourne l'aire du parallélogramme. */ @Override public double aire() { return 2 * this.getLongueur() * this.getLargeur() + 2 * this.getLongu eur() * this.getHauteur() + 2 * this.getLargeur() * this.getHauteur() ; }
/** *
Calcule le volume du parallélogramme.
* @return Retourne le volume du parallélogramme. */ public double volume() { return this.getLongueur() * this.getLargeur() * this.getHauteur(); }
/** *
Retourne une représentation du parallélogramme.
* @return Renvoie une représentation du parallélogramme. */ @Override public String toString() { return "Parallélogramme[position:(" + this.getX() + ", " + this.getY( ) + "), longueur:" + this.getLongueur() + ", largeur:" + this.getLargeur() + ", ha uteur:" + this.getHauteur() + "]"; } }
/* * * * * * * * * * *
Fichier: TestParallelogramme.java Crée le: 29 janvier 2007. Auteurs: Sébastien ESTIENNE. SiteWeb: http://www.prog-info.org/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
* This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 021101301 USA */ package chapitre8.parallelogramme ;
/** *
Classe de test pour les classes Point, Rectangle et Parallelogramme.< /p> * @author Sébastien ESTIENNE. */ public class TestParallelogramme { /** *
Débute l'exécution du test.
* @param args Les paramètres de la ligne de commande. */ public static void main(String[] args) { // Point. Point p = new Point(1.3, 4.8); System.out.println(p); // Rectangle. Rectangle r = new Rectangle(2.5, 6.2, 5.0, 3.0); System.out.println(r); System.out.println("Aire: " + r.aire()); // Parallélogramme. Parallelogramme m = new Parallelogramme(1.7, 3.2, 7.0, 4.0, 2.0); System.out.println(m); System.out.println("Aire: " + m.aire()); System.out.println("Volume: " + m.volume()); } }
EXERCICES : Personne Posté par admin le 11/03/2010 07:59:34 (58 lectures)
Ecrivez une classe Personne avec les attributs suivants:
* nom: Le nom de famille de la personne, * prenom: Le prénom de la personne, * age: L'âge de la personne compris entre 0 et 130 ans, * sexe: Masculin ou Féminin.
La classe Personne doit disposer des constructeurs suivants:
* Personne(): constructeur par défaut, * Personne(nom, prenom), * Personne(nom, prenom, age), * Personne(nom, prenom, age, sexe), * Personne(Personne).
La classe Personne doit contenir des accesseurs et mutateurs pour les différents attributs. Elle doit aussi contenir une méthode toString() donnant une représentation de la classe Personne. Ecrivez aussi une classe de testPersonne afin de tester la classe Personne.
Solution
/** *
Classe représentant une personne.
* @author Sébastien ESTIENNE. */ public class Personne { /** *
Le type Sexe.
*/ public enum TSexe { /** *
Sexe: Masculin.
*/ Masculin, /** *
Sexe: Féminin.
*/ Feminin } // Nom de la personne.
private String nom; // Prénom de la personne. private String prenom; // Age de la personne. private int age; // Sexe de la personne. private TSexe sexe; /** *
Constructeur par défaut d'une personne.
*/ public Personne() { this("", "", 0, TSexe.Masculin); }
/** *
Constructeur de personne avec un nom et un prénom spécifiés.
* @param nom Le nom de la personne. * @param prenom Le prénom de la personne. */ public Personne(String nom, String prenom) { this(nom, prenom, 0, TSexe.Masculin); }
/** *
Constructeur de personne avec un nom, un prénom et un âge spécifié s.
* @param nom Le nom de la personne. * @param prenom Le prénom de la personne. * @param age L'âge de la personne. */ public Personne(String nom, String prenom, int age) { this(nom, prenom, age, TSexe.Masculin); }
/** *
Constructeur de personne avec un nom, un prénom, un âge et un sexe spécifiés.
* @param nom Le nom de la personne. * @param prenom Le prénom de la personne. * @param age L'âge de la personne. * @param sexe Le sexe de la personne. */ public Personne(String nom, String prenom, int age, TSexe sexe) { this.setNom(nom); this.setPrenom(prenom); this.setAge(age); this.setSexe(sexe); }
/** *
Constructeur de personne à partir d'une personne existante.
* @param personne Une personne. */ public Personne(Personne personne) { this(personne.getNom(), personne.getPrenom(), personne.getAge(), pers onne.getSexe()); } /** *
Retourne l'âge de la personne.
* @return Renvoie l'âge de la personne. */ public final int getAge() { return this.age; } /** *
Modifie l'âge de * @param age L'âge de */ public void setAge(int { if(age < 0 || age > this.age = 0; else this.age = age; }
la personne.
la personne. age) 130)
/** *
Retourne le nom de la personne.
* @return Renvoie le nom de la personne. */ public final String getNom() { return this.nom; }
/** *
Modifie le nom de la personne.
* @param nom Le nom de la personne. */ public void setNom(String nom) { this.nom = nom; }
/** *
Retourne le prénom de la personne.
* @return Renvoie le prénom de la personne. */ public final String getPrenom() {
return this.prenom; }
/** *
Modifie le prénom de la personne.
* @param prenom Le prénom de la personne. */ public void setPrenom(String prenom) { this.prenom = prenom; } /** *
Retourne le sexe de la personne.
* @return Renvoie le sexe de la personne. */ public final TSexe getSexe() { return this.sexe; } /** *
Modifie le sexe de la personne.
* @param sexe Le sexe de la personne. */ public void setSexe(TSexe sexe) { this.sexe = sexe; } /** *
Retourne une représentation d'une personne.
* @return Renvoie une représentation d'une personne. */ @Override public String toString() { String resultat; resultat = "Personne: {nom:" + this.getNom() + "; prénom:" + this.get Prenom() + "; âge:" + this.getAge() + " an(s); sexe:"; if(this.getSexe() == TSexe.Masculin) resultat += "Masculin}"; else resultat += "Féminin}"; return resultat; } }
/* * Fichier: TestPersonne.java
* Crée le: 13 janvier 2007. * Auteurs: Sébastien ESTIENNE. * SiteWeb: http://www.prog-info.org/ * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 021101301 USA */ package chapitre7.personne;
import chapitre7.personne.Personne.TSexe;
/** *
Classe permettant de tester la classe Personne.
* @author Sébastien ESTIENNE. */ public class TestPersonne { /** *
Débute l'exécution du test.
* @param args Les paramètres de la ligne de commande. */ public static void main(String[] args) { // Personne 1. Personne personne1 = new Personne(); personne1.setNom("SANCHEZ"); personne1.setPrenom("Emilie"); personne1.setAge(31); personne1.setSexe(TSexe.Feminin); System.out.println(personne1); // Personne 2. Personne personne2 = new Personne(personne1); personne2.setNom("FABRE"); personne2.setAge(26); System.out.println(personne2); // Personne 3. Personne personne3 = new Personne("MARTIN", "Julien", 24); personne3.setSexe(TSexe.Masculin); System.out.println(personne3); } } EXERCICES : Jet de dés
Posté par admin le 10/03/2010 17:47:50 (59 lectures)
Ecrivez un applet qui simule grâce à des nombres aléatoires un lancer de deux dés. Il existe 36 combinaisons et la somme des deux dés est comprise entre 2 et 12 avec certaines plus f réquentes que d'autres. Simulez 36000 lancers et stockez la fréquence de chaque somme dans un tableau. Affichez ensuite les résultats dans une zone de texte et vérifiez que les fréquences sont correctes. Ajoutez aussi un bouton afin de pouvoir effectuer de nouvelles séries de lancers de dés.
Fréquence des possibilités:
* 2: 1 * 3: 2 * 4: 3 * 5: 4 * 6: 5 * 7: 6 * 8: 5 * 9: 4 * 10: 3 * 11: 2 * 12: 1
Solution
import import import import
java.awt.BorderLayout; java.awt.Container; java.awt.event.ActionEvent; java.awt.event.ActionListener ;
import javax.swing.JApplet; import javax.swing.JButton; import javax.swing.JTextArea;
/** *
Calcule la fréquence de la somme de lancers de deux dés.
* @author Sébastien ESTIENNE. */ public class JetDeDes extends JApplet implements ActionListener { /** *
Serial version UID.
*/ private static final long serialVersionUID = 1L;
// Nombre de lancers. final int NB_LANCERS = 36000; // Tableau de fréquence des sommes des lancers de dés. int[] tableau = new int[13]; // Chaine de caractère de sortie. String sortie = ""; // Zone de texte de sortie. JTextArea zoneSortie = new JTextArea(); // Bouton permettant d'effetuer une série de lancers. JButton boutonLancer = new JButton("Lancer");
/** *
Initialise l'applet.
*/ @Override public void init() { // Ajoute une action sur le bouton. this.boutonLancer.addActionListener(this); // Conteneur. Container conteneur = this.getContentPane (); // Ajoute les composants au conteneur. conteneur.add(this.zoneSortie, BorderLayout.CENTER); conteneur.add(this.boutonLancer, BorderLayout.SOUTH); } /** *
Traite une série de lancers de dés.
* @param actionEvent Un événement sémantique qui indique qu'une action s'est produite dans le * composant concerné. */ public void actionPerformed(ActionEvent actionEvent) { // Effectue la série de lancers. lancer(); // Initialise le texte de sortie. this.sortie = "Fréquence des résultats des lancers de dés:\n" ; for(int i = 2; i < this.tableau.length; i++) this.sortie += i + " : " + this.tableau[i] + '\n'; // Met à jour la zone de sortie. this.zoneSortie.setText(this.sortie); }
/** *
Effectue une série de lancers de dés.
*/ public void lancer() { // Résultats des lancers de dés.
int d1, d2; // Initialise le tableau. for(int i = 0; i < this.tableau.length; i++) { this.tableau[i] = 0; } // Effectue for(int i = { // Lance d1 = 1 + d2 = 1 +
les lancers. 0; i < this.NB_LANCERS; i++) les dés. (int) (Math.random() * 6); (int) (Math.random() * 6);
// Ajoute le résultat du lancer. this.tableau[d1 + d2]++; } } }
EXERCICES : Tri Bulle Posté par admin le 10/03/2010 17:46:38 (42 lectures)
Le tri de données est un problème qui revient souvent. Le tri à bulle est un tri simple qui n'est pas fait pour de grands tableaux. Ecrivez l'algorithme du tri à bulle. (Cet agorithme consiste à comparer les différentes valeurs adjacentes d'un tableau et à les échanger si besoin est. A chaque passage du tableau, un élément supplémentaire est trié. Le nombre de passages nécessaires pour trier le tableau dans son intégralité est donc de la taille du tableau moins un.) Améliorez le ensuite sachant qu'à chaque passage supplémentaire une valeur de plus est triée à la fin du tableau. Ainsi à chaque passage le nombre de comparaisons nécessaires diminue de un. Il est possible que le tableau soit trié avant que tous les passages du tableau ne soient efectuées. La deuxième amélioration consiste donc à vérifier que si aucune permutation n'a été faite, d'arrêter l'algorithme de tri.
Solution
import java.awt.Container; import javax.swing.JApplet; import javax.swing.JTextArea;
/** *
Tri à bulle amélioré.
* @author Sébastien ESTIENNE.
*/ public class TriBulle extends JApplet { /** *
Serial version UID.
*/ private static final long serialVersionUID = 1L; /** *
Initialise l'applet.
*/ @Override public void init() { // Tableau des valeurs à trier. int tableau[] = {5, 56, 34, 43, 17, 25, 8, 65, 31, 52}; // Chaine de caractère de sortie. String sortie = ""; // Zone de texte de sortie. JTextArea zoneSortie = new JTextArea(); // Conteneur. Container conteneur = this.getContentPane (); // Ajoute la zone de sortie au conteneur. conteneur.add(zoneSortie); // Ajoute sortie += for(int i sortie
à la chaine de sortie les valeurs départ du tableau. "Valeurs de départ du tableau:\n" ; = 0; i < tableau.length; i++) += " " + tableau[i];
// Trie le tableau. triBulle(tableau); // Ajoute sortie += sortie += for(int i sortie
à la chaine de sortie les valeurs truées du tableau. "\n\n"; "Valeurs triées du tableau:\n" ; = 0; i < tableau.length; i++) += " " + tableau[i];
// Met à jour la zone de sortie. zoneSortie.setText(sortie); }
/** *
Effectue un tri bulle.
* @param tableau Les valeurs à trier. */ public void triBulle(int tableau[]) { // Nombre de passages nécessaires pour trier le tableau entier. for(int i = 1; i < tableau.length; i++) { // Indique s'il faut continuer le tri ou non. boolean continuer = false;
// Un passage dans le tableau permettant de trier un élément. for(int j = 0; j < tableau.length - i; j++) { // Compare une paire d'éléments et les permutte si le premier e st supérieur au second. if(tableau[j] > tableau[j + 1]) { permuter(tableau, j, j + 1); continuer = true; } } // Si aucune permutation n'a été effectué, alors le tableau est dé jà trié. if(!continuer) break; } }
/** *
Permutte deux éléments d'un tableau.
* @param tableau Le tableau concerné. * @param i L'indice du premier élément. * @param j L'indice du second élément. */ public void permuter(int tableau[], int i, int j) { // Variable temporaire pour la permutation. int temp; temp = tableau[i]; tableau[i] = tableau[j]; tableau[j] = temp; } }
EXERCICES : Gestion de clients Posté par admin le 10/03/2010 17:12:57 (48 lectures)
Ecrire une application qui vérifie si un client (d'un magasin) a dépassé sa limite de crédit sur son compte débiteur. Pour chaque client, vous avez les données suivantes : - le numéro de compte; - le solde au début du mois; - le total des articles portés en compte de ce client ce mois-ci; - le total de tous les crédits appliqués au compte de ce client ce mois-ci; - la limite de crédit autorisée. L'utilisateur doit pouvoir saisir chaque donnée sous forme d'entiers dans des boîtes de dialogue d'entrée, calculer le nouveau solde (solde
début - débits + crédits), afficher le nouveau solde et déterminer si le nouveau solde dépasse la limite de crédit du client (dans ce cas, il faut afficher le message "Limite de crédit dépassée" ).
Solution
import javax.swing.JOptionPane;
/** *
Gestion de comptes clients dans un magasin.
* @author Sébastien ESTIENNE. */ public class Client { /** *
Débute l'exécution de l'application.
* @param args Les paramètres de la ligne de commande. */ public static void main(String[] args) { // Entrées de l'utilisateur: // Le numéro du compte. String sNoCompte = ""; // Le solde au début du mois. String sSolde = ""; // Le total des articles portés en compte de ce client ce mois-ci. String sDebits = ""; // Le total de tous les crédits appliqués au compte de ce client ce m ois-ci. String sCredits = ""; // La limite de crédit autorisée. String sLimite = ""; // Données entrées par l'utilisateur converties. int noCompte = -1; double solde = 0, debits = 0, credits = 0, limite = 0; // Chaine de caractères pour l'affichage du nouveau solde. String sortie = ""; // Demander à l'utilisateur le numero du compte. sNoCompte = JOptionPane.showInputDialog("Entrez le numéro du compte ( -1 " + "pour terminer) :\n\n"); // Convertir le numero du compte de String en entier. try { noCompte = Integer.parseInt(sNoCompte); } // Si la valeur n'est pas un nombre entier, cela génère une exception qui implique un // traitement particulier.
catch(NumberFormatException e) { JOptionPane.showMessageDialog (null, "La valeur saisie est incorrecte, l'application va se termin er.", "Erreur", JOptionPane.ERROR_MESSAGE); noCompte = -1; } while(noCompte != -1) { // Demander à l'utilisateur le Solde, les Débits, les Crédits, la Limite du compte. sSolde = JOptionPane.showInputDialog("Entrez le solde au début du mois :\n\n"); sDebits = JOptionPane.showInputDialog ("Entrez le total des article s portés en " + "compte ce mois :\n\n"); sCredits = JOptionPane.showInputDialog("Entrez le total des crédit s appliqués " + "au compte ce mois :\n\n"); sLimite = JOptionPane.showInputDialog ("Entrez la limite de crédit autorisée " + ":\n\n"); // Convertir le Solde, les Débits, les Crédits, la Limite du compt e de String en double. try { solde = Double.parseDouble(sSolde); debits = Double.parseDouble(sDebits); credits = Double.parseDouble(sCredits); limite = Double.parseDouble(sLimite); } // Si une des valeurs n'est pas un nombre, cela génère une excepti on qui implique un // traitement particulier. catch(NumberFormatException e) { JOptionPane.showMessageDialog(null, "Au moins une des valeurs saisies est incorrecte.\n" + "Ces valeurs seront initialisées à 0." , "Erreur", JOptionPane.ERROR_MESSAGE); noCompte = -1; } // Calculer la valeur du nouveau solde du mois. solde = solde - debits + credits; // Mettre à jour la chaine de sortie. sortie = "Le nouveau solde du compte numéro " + noCompte + " est : " + solde + ".\n"; // Vérifier si la limite de crédit a été dépassée. if(solde + limite < 0) // On modifie la chaine de sortie. sortie += "La limite de crédit est dépassée."; // Afficher le nouveau solde du compte pour ce mois. JOptionPane.showMessageDialog (null, sortie, "Solde du mois", JOptionPane.INFORMATION_MESSAGE );