Vous êtes sur la page 1sur 55

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 /* nicolas.janey@univ-fcomte.fr */ /* Fevrier 2005 import java.io.*;

*/ */

public class InversionTableau { static BufferedReader flux = new BufferedReader(new InputStreamReader(Sys tem.in)); /* Fonction d'affichage de tous les entiers contenus /* dans un tableau d'entiers */ */

public static void affichageTableau(int [] t) { int i; /* Pour toutes les valeurs d'indice 0 a t.length-1 inclus for ( i = 0 ; i < t.length ; i++ ) System.out.println(t[i]); } /* Fonction d'initialisation 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(int [] t,int max) { int i; /* Pour toutes les valeurs d'indice 0 a t.length-1 inclus */ for ( i = 0 ; i < t.length ; i++ ) { /* Initialisation de t[i] avec un entier tire */ /* au hasard entre 0.0 (inclu) et max+1 (exclu) */ t[i] =(int) ((max+1)*Math.random()); } } /* Fonction d'inversion de l'ordre des entiers presents /* dans un tableau public static void inversionTableau(int [] t) { int i; /* Definition d'une variable auxiliaire utilisee /* pour la permutation de deux autres variables int aux; /* Pour les t.length/2 couples d'entiers a permuter for ( i = 0 ; i < t.length/2 ; i++ ) { /* Permutation des valeurs d'indice i et t.length-1-i aux = t[i]; t[i] = t[t.length-1-i]; t[t.length-1-i] = aux; } } /* Fonction principale */ */ */

*/ */ */ */

public static void main(String [] args) throws IOException { /* Definition, allocation et initialisation de 1 tableau */

/* de 7 entiers tires au hasard entre 0 et 100 */ int [] tab = new int[7]; initialisationTableau(tab,100); System.out.println("Le tableau 1 contient les valeurs suivantes:"); /* Appel a la fonction d'affichage sur le tableau */ affichageTableau(tab); System.out.println(); /* Inversion du tableau tab */ inversionTableau(tab); /* Nouvel appel a la fonction d'affichage sur le tableau */ affichageTableau(tab); } }

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 /* nicolas.janey@univ-fcomte.fr */ /* Fevrier 2005 import java.io.*;

*/ */

public class AffichageTableau { static BufferedReader flux = new BufferedReader(new InputStreamReader(Sys tem.in)); /* Fonction d'affichage de tous les entiers contenus /* dans un tableau d'entiers */ */

public static void affichageTableau(int [] t) { int i; /* Pour toutes les valeurs d'indice 0 a t.length-1 inclus for ( i = 0 ; i < t.length ; i++ ) System.out.println(t[i]); } /* Fonction principale */

*/

public static void main(String [] args) throws IOException { /* Definition et allocation de 1 tableau de 15 entiers */ int [] t1 = new int[15]; System.out.println("Le tableau 1 contient les valeurs suivantes:"); /* Appel a la fonction d'affichage sur le premier tableau */ affichageTableau(t1); System.out.println(); /* Definition et initialisation de 1 tableau de 6 entiers */ int [] t2 = { 1,-1,3,-5,7,9 }; System.out.println("Le tableau 2 contient les valeurs suivantes:"); /* Appel a la fonction d'affichage sur le deuxieme tableau */

affichageTableau(t2); } } AffichageTableau.java Exercice 2 Ecrire en Java et valider une fonction de remplissage d'un tableau d'entier avec des valeurs tires au hasard entre 0 et 9. /* Auteur: Nicolas JANEY /* nicolas.janey@univ-fcomte.fr */ /* Fevrier 2005 import java.io.*; public class RemplissageHasardTableau { static BufferedReader flux = new BufferedReader(new InputStreamReader(Sys tem.in)); /* Fonction d'affichage de tous les entiers contenus /* dans un tableau d'entiers */ */ */ */

public static void affichageTableau(int [] t) { int i; /* Pour toutes les valeurs d'indice 0 a t.length-1 inclus for ( i = 0 ; i < t.length ; i++ ) System.out.println(t[i]); } /* Fonction d'initialisation 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(int [] t,int max) { int i; /* Pour toutes les valeurs d'indice 0 a t.length-1 inclus */ for ( i = 0 ; i < t.length ; i++ ) { /* Initialisation de t[i] avec un entier tire */ /* au hasard entre 0.0 (inclu) et max+1 (exclu) */ t[i] =(int) ((max+1)*Math.random()); } } /* Fonction principale */

public static void main(String [] args) throws IOException { /* Definition et allocation d'un tableau de 10 entiers */ /* tires au sort entre 0 et 5 */ int [] tab = new int[10]; initialisationTableau(tab,5); System.out.println("Le tableau contient les valeurs suivantes:"); /* Appel a la fonction d'affichage */ affichageTableau(tab); } }

EXERCICES : gestion d'une bibliothque


Post par admin le 11/03/2010 08:54:14 (164 lectures)

On veut modliser la gestion d'une bibliothque : on dfinira un certain nombre de classes : Main, Ouvrage, BiblioTab, Bibliotheque, Periodique, CD, Livre. Les livres auront comme proprits : auteur, titre, diteur ; les priodiques : nom, numro, priodicit ; les CDs : titre, auteur. De plus tous les ouvrages auront une date d'emprunt (potentiellement nulle), une cote (le numro par ordre de cration). On implmentera galement sur chaque objet une mthode toString() renvoyant toutes les informations sur l'ouvrage sous forme d'une chane de caractres.

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 mthode toString() affichant le nombres d'ouvrages, puis chaque ouvrage successivement. La classe Bibliotheque sera simplement une version abstraite dclarant les mmes mthodes que BiblioTab mais sans les implmenter. BiblioTab hritera de Bibliotheque.

La classe Main ne contiendra que la mthode main et testera la bibliothque en y insrant et supprimant quelques ouvrages, puis en affichant le contenu de la bibliothque.

1. Reprsentez les diffrentes classes dans un graphe d'hritage. On mettra en vidence pour chaque classe les mthodes et les champs qu'elle dfinit, redfinit ou hrite. On souhaite que tous les champs soient dclars privs et que l'on puisse y accder de l'extrieur que par des mthodes. 2. Implmentez les classes ci-dessus. Pour la classe BiblioTab on utilisera un tableau de longueur suffisante (on vrifiera quand mme chaque opration d'insertion que l'on ne dpasse pas les bornes du tableau). Quel sont les inconvnients de cette mthode ?

Dans ce qui suit, on veut implmenter une deuxime version de la bibliothque, que l'on appellera BiblioList et qui hritera galement de Bibliotheque. Cette nouvelle implmentation utilisera la classe LinkedList dfinie 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 mthodes boolean add(Object o) qui permet d'ajouter un objet dans la liste, boolean remove(Object o) Object get(int index) et int size(), implmentez la classe BiblioList. Vous trouverez la documentation complte de la classe LinkedList en http://www.pps.jussieu.fr/~baro/ensei ... /LBI/Java/LinkedList.html. Vous devrez ajouter au dbut 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() {

return cote ; } public String toString() { String res = "[" + cote + "] "; if(dateEmprunt != null) return res + "emprunte le " + dateEmprunt ; else return res + "disponible" ; } public String dateEmprunt() { return dateEmprunt ; } public void setDateEmprunt(String dateEmprunt) { this.dateEmprunt = dateEmprunt ; } public static int getNombre() { return nombre ; } public Ouvrage() { cote = nombre++ ; } } // Livre.java public class Livre private String private String private String extends Ouvrage { titre ; auteur ; editeur ;

public void setTitre(String titre) { this.titre = titre ; } public String titre() { return titre ; } public void setAuteur(String auteur) { this.auteur = auteur ; } public String auteur() { return auteur ; } public void setEditeur(String editeur) { this.editeur = editeur ; } public String editeur() { return editeur ; } public String toString() { return super.toString() + " " + titre + " " + auteur + " " + editeur ; } public Livre(String titre, String auteur, String 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<l.size() ; i++) { Ouvrage o = (Ouvrage)l.get(i) ; if(o.cote() == cote) l.remove(o) ; } } public String toString() { String buf = "" ; for(int i=0 ; i<l.size() ; i++) { buf = buf + "\n" + l.get(i).toString() ; } return buf ; } public int number() { return l.size() ; } } // Main.java public class Main { public static void main(String[] args) { Ouvrage o1, o2, o3, o4 ; o1 = new Livre("La petite fille au tambour", "John Le Carre", "Seuil") ; o2 = new Livre("Pour qui sonne le glas", "Ernest Hemingway", "J'ai Lu") ; o3 = new Livre("Guide du routard galactique", "Douglas Adams", "Denoel") ; o4 = new Livre("En attendant le vote des betes sauvages","Amadou Kourouma ","Seuil") ; Biblio b = new BiblioList() ; b.add(o1) ; b.add(o2) ;

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 prnom 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 diffrents attributs et les mthodes suivantes:

* toString(): retourne une reprsentation d'un employ, * gains(): retourne le salaire (abstraite).

Ecrivez une classe Patron hritant 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 diffrents attributs et les mthodes suivantes:

* toString(): retourne une reprsentation du patron, * gains(): retourne le salaire du patron.

Ecrivez une classe TravailleurCommission hritant 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, commision).

La classe TravailleurCommission doit contenir des accesseurs et mutateurs pour les diffrents attributs et les mthodes suivantes:

* toString(): retourne une reprsentation du travailleur la commission, * gains(): retourne le salaire du travailleur la commission.

Ecrivez une classe TravailleurHoraire hritant de Employ avec les attributs suivants:

* retribution: La rtrubution horaire,

* heures: Le nombre d'heures de travail par mois.

La classe TravailleurHoraire doit disposer des constructeurs suivants:

* TravailleurHoraire(), * TravailleurHoraire(nom, prenom, retribution).

La classe TravailleurHoraire doit contenir des accesseurs et mutateurs pour les diffrents attributs et les mthodes suivantes:

* toString(): retourne une reprsentation du travailleur horaire, * gains(): retourne le salaire du travailleur horaire.

Ecrivez aussi une classe de testEmploye afin de tester les classes. Utilisez les proprits du polymorphisme.

Solution

/** * <p>Classe reprsentant un employ.</p> * @author Sbastien ESTIENNE. */ public abstract class Employe { // Le nom de l'employ. protected String nom; // Le prnom de l'employ. protected String prenom; /** * <p>Constructeur par dfaut.</p> */ public Employe() { this("", ""); } /** * <p>Constructeur d'employ avec un nopm et un prnom spcifis.</p> * @param nom Le nom de l'employ. * @param prenom Le prnom de l'employ. */

protected Employe(String nom, String prenom) { this.setNom(nom); this.setPrenom(prenom); } /** * <p>Calcule le salaire de l'employ par mois.</p> * @return Retourne le salaire de l'employ par mois. */ public abstract double gains(); /** * <p>Retourne le nom de l'employ.</p> * @return Renvoie le nom de l'employ. */ public String getNom() { return this.nom; } /** * <p>Modifie le nom de l'employ.</p> * @param nom Le nom de l'employ. */ public void setNom(String nom) { this.nom = nom; } /** * <p>Retourne le prnom de l'employ.</p> * @return Renvoie le prnom de l'employ. */ public String getPrenom() { return this.prenom; } /** * <p>Modifie le prnom de l'employ.</p> * @param prenom Le prnom de l'employ. */ public void setPrenom(String prenom) { this.prenom = prenom; } /** * <p>Retourne une reprsentation de l'employ.</p> * @return Renvoie une reprsentation de l'employ. */ @Override public String toString() {

return "Employ[nom:" + this.getNom() + ", prnom:" + this.getPrenom( ) + "]"; } }

/* * Fichier: Patron.java * Cre le: 30 janvier 2007. * Auteurs: Sbastien 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;

/** * <p>Classe reprsentant un patron.</p> * @author Sbastien ESTIENNE. */ public class Patron extends Employe { // Le salaire mensuel du patron. protected double salaire; /** * <p>Constructeur par dfaut.</p> */ public Patron() { this("", "", 0.0); } /** * <p>Constructeur de patron avec un nom, un prnom et un salaire spcif is.</p> * @param nom Le nom du patron. * @param prenom Le prnom du patron. * @param salaire Le salaire du patron. */

public Patron(String nom, String prenom, double salaire) { super(nom, prenom); this.setSalaire(salaire); } /** * <p>Calcule le salaire de l'employ par mois.</p> * @return Retourne le salaire de l'employ par mois. */ @Override public double gains() { return this.getSalaire(); } /** * <p>Retourne le salaire mensuel du patron.</p> * @return Renvoie le salaire mensuel du patron. */ public double getSalaire() { return this.salaire; } /** * <p>Modifie le salaire mensuel du patron.</p> * @param salaire Le salaire mensuel du patron. */ public void setSalaire(double salaire) { if(salaire < 0) this.salaire = 0.0; else this.salaire = salaire; } /** * <p>Retourne une reprsentation du patron.</p> * @return Renvoie une reprsentation du patron. */ @Override public String toString() { return "Patron[nom:" + this.getNom() + ", prnom:" + this.getPrenom() + ", salaire:" + this.gains() + "]"; } }

/* * Fichier: TravailleurCommission.java * Cre le: 30 janvier 2007.

* Auteurs: Sbastien 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;

/** * <p>Classe reprsentant un travailleur la commision.</p> * @author Sbastien 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; /** * <p>Constructeur par dfaut.</p> */ public TravailleurCommission() { this("", "", 0.0, 0.0); } /** * <p>Constructeur de travailleur la commission avec un nom, un prnom , un salaire et la * commision spcifis.</p> * @param nom Le nom du travailleur la commission. * @param prenom Le prnom 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); } /** * <p>Calcule le salaire de l'employ par mois.</p> * @return Retourne le salaire de l'employ par mois. */ @Override public double gains() { return this.getSalaire() + this.getQuantite() * this.getCommission(); } /** * <p>Retourne le montant de la commission par article vendus.</p> * @return Renvoie le montant de la commission par article vendus. */ public double getCommission() { return this.commission; } /** * <p>Modifie montant de la commission par article vendus.</p> * @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; } /** * <p>Retourne le nombre d'articles vendus par mois.</p> * @return Renvoie le nombre d'articles vendus par mois. */ public int getQuantite() { return this.quantite; } /** * <p>Modifie le nombre d'articles vendus par mois..</p> * @param quantite Le nombre d'articles vendus par mois. */ public void setQuantite(int quantite) { if(quantite < 0) this.quantite = 0; else this.quantite = quantite; }

/** * <p>Retourne le salaire mensuel de base.</p> * @return Renvoie le salaire mensuel de base.. */ public double getSalaire() { return this.salaire; } /** * <p>Modifie le salaire mensuel de base.</p> * @param salaire Le salaire mensuel de base. */ public void setSalaire(double salaire) { if(salaire < 0.0) this.salaire = 0.0; else this.salaire = salaire; } /** * <p>Retourne une reprsentation du travailleur la commission.</p> * @return Renvoie une reprsentation du travailleur la commission. */ @Override public String toString() { return "TravailleurCommission[nom:" + this.getNom() + ", prnom:" + t his.getPrenom() + ", salaire:" + this.gains() + "]"; } }

/* * * * * * * * * * * * * * * * * * *

Fichier: TravailleurHoraire.java Cre le: 30 janvier 2007. Auteurs: Sbastien 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;

/** * <p>Classe reprsentant un travailleur la commision.</p> * @author Sbastien ESTIENNE. */ public class TravailleurHoraire extends Employe { // La rtrubution horaire. protected double retribution; // Le nombre d'heures de travail par mois. protected int heures; /** * <p>Constructeur par dfaut.</p> */ public TravailleurHoraire() { this("", "", 0.0); } /** * <p>Constructeur de travailleur horaire avec un nom, un prnom, une r tribution horaire * spcifis.</p> * @param nom Le nom du travailleur horaire. * @param prenom Le prnom du travailleur horaire. * @param retribution La rtrubution horaire. */ TravailleurHoraire(String nom, String prenom, double retribution) { super(nom, prenom); this.setRetribution(retribution); } /** * <p>Calcule le salaire de l'employ par mois.</p> * @return Retourne le salaire de l'employ par mois. */ @Override public double gains() { return this.getHeures() * this.getRetribution(); } /** * <p>Retourne le nombre d'heures de travail par mois.</p> * @return Renvoie le nombre d'heures de travail par mois. */ public int getHeures() {

return this.heures; } /** * <p>Modifie le nombre d'heures de travail par mois.</p> * @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; } /** * <p>Retourne la rtrubution horaire.</p> * @return Renvoie la rtrubution horaire. */ public double getRetribution() { return this.retribution; } /** * <p>Modifie la rtrubution horaire.</p> * @param retribution La rtrubution horaire. */ public void setRetribution(double retribution) { if(retribution < 0.0) this.retribution = 0.0; else this.retribution = retribution; } /** * <p>Retourne une reprsentation du travailleur horaire.</p> * @return Renvoie une reprsentation du travailleur horaire. */ @Override public String toString() { return "TravailleurHoraire[nom:" + this.getNom() + ", prnom:" + this .getPrenom() + ", salaire:" + this.gains() + "]"; } }

/* * Fichier: TestEmploye.java * Cre le: 30 janvier 2007. * Auteurs: Sbastien 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;

/** * <p>Classe de test pour les classes Employe, Patron, TravailleurCommissio n, TravailleurHoraire.</p> * @author Sbastien ESTIENNE. */ public class TestEmploye { /** * <p>Dbute l'excution du test.</p> * @param args Les paramtres 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 diffrents attributs et les mthodes suivantes:

* aire(): L'aire de la figure (abstraite), * toString(): Donne une reprsentation de la figure.

Ecrivez un classe Disque hritant 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 diffrents attributs et les mthodes suivantes:

* aire(): Donne l'aire du disque, * toString(): Donne une reprsentation du Disque.

Ecrivez un classe Rectangle hritant de Figure avec les attributs suivants:

* longueur: La longueur du rectangle, * largeur: La largeur du rectangle.

La classe Rectangle doit disposer des constructeurs suivants:

* Rectangle(), * Rectangle(longueur, largeur).

La classe Rectangle doit contenir des accesseurs et mutateurs pour les diffrents attributs et les mthodes suivantes:

* aire(): Donne l'aire du rectangle, * toString(): Donne une reprsentation du Rectangle.

Ecrivez aussi une classe de testFigure afin de tester les classes. Utilisez les proprits du polymorphisme.

Solution

/** * <p>Classe reprsentant une figure.</p> * @author Sbastien ESTIENNE. */ public abstract class Figure { // Le nom de la figure. protected String nom; /** * <p>Constructeur par dfaut.</p> */ public Figure() { this("Figure"); } /** * <p>Constructeur de figure avec un nom spcifi.</p> * @param nom Le nom de la figure. */ protected Figure(String nom) { this.setNom(nom); } /** * <p>Retourne le nom de la figure.</p> * @return Renvoie le nom de la figure.

*/ public String getNom() { return this.nom; } /** * <p>Modifie le nom de la figure.</p> * @param nom Le nom de la figure. */ public void setNom(String nom) { this.nom = nom; } /** * <p>Calcule l'aire de la figure.</p> * @return Retourne l'aire de la figure. */ public abstract double aire(); /** * <p>Retourne une reprsentation de la figure.</p> * @return Renvoie une reprsentation de la figure. */ @Override public String toString() { return this.getNom(); } }

/* * Fichier: Disque.java * Cre le: 30 janvier 2007. * Auteurs: Sbastien 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;

/** * <p>Classe reprsentant un disque.</p> * @author Sbastien ESTIENNE. */ public class Disque extends Figure { // Le centre du disque. protected Point2D.Double centre; // Le rayon du disque. protected double rayon; /** * <p>Constructeur par dfaut.</p> */ public Disque() { this(new Point2D.Double(0.0, 0.0), 0); } /** * <p>Constructeur de disque avec un nom, un centre et un rayon spcifi .</p> * @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); } /** * <p>Calcule l'aire de la figure.</p> * @return Retourne l'aire de la figure. */ @Override public double aire() { return 2 * Math.PI * this.getRayon(); } /** * <p>Retourne le centre du disque.</p> * @return Renvoie le centre du disque. */ public Point2D.Double getCentre() {

return this.centre; } /** * <p>Modifie le centre du disque.</p> * @param centre Le centre du disque. */ public void setCentre(Point2D.Double centre) { this.centre = centre; } /** * <p>Retourne le rayon du disque.</p> * @return Renvoie Le rayon du disque. */ public double getRayon() { return this.rayon; } /** * <p>Modifie le rayon du disque.</p> * @param rayon Le rayon du disque. */ public void setRayon(double rayon) { if(rayon < 0.0) this.rayon = 0.0; else this.rayon = rayon; } /** * <p>Retourne une reprsentation du disque.</p> * @return Renvoie une reprsentation du disque. */ @Override public String toString() { return this.getNom() + "[centre:(" + this.getCentre().getY() + "," + this.getCentre().getX() + "), rayon:" + this.getRayon() + "]" ; } }

/* * * * * * *

Fichier: Rectangle.java Cre le: 30 janvier 2007. Auteurs: Sbastien 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;

/** * <p>Classe reprsentant un rectangle.</p> * @author Sbastien ESTIENNE. */ public class Rectangle extends Figure { // La longueur du rectangle. protected double longueur; // La largeur du rectangle. protected double largeur; /** * <p>Constructeur par dfaut.</p> */ public Rectangle() { this(0.0, 0.0); } /** * <p>Constructeur de rectangle avec une longueur et une largeur spcifi es.</p> * @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); } /** * <p>Calcule l'aire de la figure.</p> * @return Retourne l'aire de la figure. */ @Override public double aire()

{ return this.getLongueur() * this.getLargeur(); } /** * <p>Retourne la largeur du rectangle.</p> * @return Renvoie la largeur du rectangle. */ public double getLargeur() { return this.largeur; } /** * <p>Modifie la largeur du rectangle.</p> * @param largeur La largeur du rectangle. */ public void setLargeur(double largeur) { if(largeur < 0.0) this.largeur = 0.0; else this.largeur = largeur; } /** * <p>Retourne la longueur du rectangle.</p> * @return Renvoie la longueur du rectangle. */ public double getLongueur() { return this.longueur; } /** * <p>Modifie la longueur du rectangle.</p> * @param longueur La longueur du rectangle. */ public void setLongueur(double longueur) { if(longueur < 0.0) this.longueur = 0.0; else this.longueur = longueur; } /** * <p>Retourne une reprsentation du rectangle.</p> * @return Renvoie une reprsentation du rectangle. */ @Override public String toString() { return this.getNom() + "[longueur:" + this.getLongueur() + ", largeur :" + this.getLargeur() + "]";

} }

/* * Fichier: TestFigure.java * Cre le: 30 janvier 2007. * Auteurs: Sbastien 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; /** * <p>Classe de test pour les classes Figure, Disque et Rectangle.</p> * @author Sbastien ESTIENNE. */ public class TestFigure { /** * <p>Dbute l'excution du test.</p> * @param args Les paramtres 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 Btiment avec les attributs suivants:

* adresse.

La classe Btiment doit disposer des constructeurs suivants:

* Batiment(), * Batiment(adresse).

La classe Btiment doit contenir des accesseurs et mutateurs pour les diffrents attributs. La classe Btiment doit contenir une mthode toString() donnant une reprsentation du Btiment.

Ecrivez une classe Maison hritant de Btiment avec les attributs suivants:

* nbPieces: Le nombre de pices 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 diffrents attributs. La classe Maison doit contenir une mthode

toString() donnant une reprsentation de la Maison.

Ecrivez une classe Immeuble hritant de Btiment avec les attributs suivants:

* nbAppart: Le nombre 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 diffrents attributs. La classe Immeuble doit contenir une mthode toString() donnant une reprsentation de l'Immeuble.

Ecrivez aussi une classe de testBatiment afin de tester les classes.

Solution

/** * <p>Classe reprsentant un btiment.</p> * @author Sbastien ESTIENNE. */ public class Batiment { // L'adresse du btiment. protected String adresse; /** * <p>Constructeur par dfaut.</p> */ public Batiment() { this(""); } /** * <p>Constructeur de btiment avec une adresse spcifie.</p> * @param adresse */ public Batiment(String adresse) { this.setAdresse(adresse); }

/** * <p>Retourne l'adresse du btiment.</p> * @return Renvoie l'adresse du btiment. */ public String getAdresse() { return this.adresse; } /** * <p>Modifie l'adresse du btiment.</p> * @param adresse L'adresse du btiment. */ public void setAdresse(String adresse) { this.adresse = adresse; } /** * <p>Retourne une reprsentation d'un btiment.</p> * @return Renvoie une reprsentation d'un btiment. */ @Override public String toString() { return "Btiment[adresse:" + this.getAdresse() + "]"; } }

/* * Fichier: Maison.java * Cre le: 29 janvier 2007. * Auteurs: Sbastien 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;

/** * <p>Classe reprsentant une maison.</p> * @author Sbastien ESTIENNE. */ public class Maison extends Batiment { // Le nombre de pices de la maison. protected int nbPieces; /** * <p>Constructeur par dfaut.</p> */ public Maison() { this("", 0); } /** * <p>Constructeur de maison avec une adresse et un nombre de pices sp cifis.</p> * @param adresse L'adresse de la maison. * @param nbPieces Le nombre de pices de la maison. */ public Maison(String adresse, int nbPieces) { super(adresse); this.setNbPieces(nbPieces); } /** * <p>Retourne le nombre de pices de la maison.</p> * @return Renvoie le nombre de pices de la maison. */ public int getNbPieces() { return this.nbPieces; } /** * <p>Modifie le nombre de pices de la maison.</p> * @param nbPieces Le nombre de pices de la maison. */ public void setNbPieces(int nbPieces) { if(nbPieces < 0) this.nbPieces = 0; else this.nbPieces = nbPieces; } /** * <p>Retourne une reprsentation d'une maison.</p> * @return Renvoie une reprsentation d'une maison. */ @Override public String toString() { return "Maison[adresse:" + this.getAdresse() + ", nbPieces:" + this.g etNbPieces() + "]"; } }

/* * Fichier: Immeuble.java * Cre le: 29 janvier 2007. * Auteurs: Sbastien 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;

/** * <p>Classe reprsentant un immeuble.</p> * @author Sbastien ESTIENNE. */ public class Immeuble extends Batiment { // Le nombre d'appartements de l'immeuble. protected int nbAppart; /** * <p>Constructeur par dfaut.</p> */ public Immeuble() { this("", 0); } /** * <p>Constructeur d'Immeuble avec une adresse et un nombre d'appartemen t spcifis.</p> * @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); }

/** * <p>Retourne le nombre d'appartements de l'immeuble.</p> * @return Renvoie le nomvre d'appartements de l'immeuble. */ public int getNbAppart() { return this.nbAppart; } /** * <p>Modifie le nombre d'appartements de l'immeuble.</p> * @param nbAppart Le nombre d'appartements de l'immeuble. */ public void setNbAppart(int nbAppart) { if(nbAppart < 0) this.nbAppart = 0; else this.nbAppart = nbAppart; } /** * <p>Retourne une reprsentation d'un immeuble.</p> * @return Renvoie une reprsentation d'un immeuble. */ @Override public String toString() { return "Immeuble[adresse:" + this.getAdresse() + ", nbAppart:" + this .getNbAppart() + "]"; } }

/* * Fichier: Immeuble.java * Cre le: 29 janvier 2007. * Auteurs: Sbastien 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;

/** * <p>Classe reprsentant un immeuble.</p> * @author Sbastien ESTIENNE. */ public class Immeuble extends Batiment { // Le nombre d'appartements de l'immeuble. protected int nbAppart; /** * <p>Constructeur par dfaut.</p> */ public Immeuble() { this("", 0); } /** * <p>Constructeur d'Immeuble avec une adresse et un nombre d'appartemen t spcifis.</p> * @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); } /** * <p>Retourne le nombre d'appartements de l'immeuble.</p> * @return Renvoie le nomvre d'appartements de l'immeuble. */ public int getNbAppart() { return this.nbAppart; } /** * <p>Modifie le nombre d'appartements de l'immeuble.</p> * @param nbAppart Le nombre d'appartements de l'immeuble. */ public void setNbAppart(int nbAppart) { if(nbAppart < 0) this.nbAppart = 0; else this.nbAppart = nbAppart; }

/** * <p>Retourne une reprsentation d'un immeuble.</p> * @return Renvoie une reprsentation d'un immeuble. */ @Override public String toString() { return "Immeuble[adresse:" + this.getAdresse() + ", nbAppart:" + this .getNbAppart() + "]"; } }

EXERCICES : Paralllogramme
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'ordonne 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 mthode toString() donnant une reprsentation du Point.

Ecrivez une classe Rectangle hritant de Point avec les attributs suivants:

* longueur: La longueur du rectangle, * largeur: La largeur du rectangle.

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 mthodes suivantes:

* aire(): Donne l'aire du rectangle, * toString(): Donne une reprsentation du Rectangle (surcharge).

Ecrivez une classe Paralllogramme hritant de Rectangle avec les attributs suivants:

* hauteur: La hauteur du paralllogramme.

La classe Paralllogramme doit disposer des constructeurs suivants:

* Parallelogramme(), * Parallelogramme(x, y, longueur, largeur, hauteur).

La classe Paralllogramme doit contenir des accesseurs et mutateurs et aussi les les mthodes suivantes:

* aire(): Donne l'aire du paralllogramme (surcharge), * volume(): Donne le volume du paralllogramme, * toString(): Donne une reprsentation du Paralllogramme (surcharge).

Ecrivez aussi une classe de testParallelogramme afin de tester les classes.

Solution

/** * <p>Classe reprsentant un point.</p>

* @author Sbastien ESTIENNE. */ public class Point { // L'abscisse du point. protected double x; // L'ordonne du point. protected double y; /** * <p>Constructeur par dfaut.</p> */ public Point() { this(0.0, 0.0); } /** * <p>Constructeur de Point avec l'abscisse et l'ordonne spcifis.</p> * @param x L'abscisse du point. * @param y L'ordonne du point. */ public Point(double x, double y) { this.setX(x); this.setY(y); } /** * <p>Retourne l'abscisse du point.</p> * @return Renvoie l'abscisse du point. */ public double getX() { return this.x; } /** * <p>Modifie l'abscisse du point.</p> * @param x L'abscisse du point. */ public void setX(double x) { this.x = x; } /** * <p>Retourne l'ordonne du point.</p> * @return Renvoie l'ordonne du point. */ public double getY() { return this.y; }

/** * <p>Modifie l'ordonne du point.</p> * @param y L'ordonne du point. */ public void setY(double y) { this.y = y; } /** * <p>Retourne une reprsenation du point.</p> * @return Renvoie une reprsenation du point. */ @Override public String toString() { return "Point[" + this.getX() + ", " + this.getY() + "]"; } }

/* * Fichier: Rectangle.java * Cre le: 29 janvier 2007. * Auteurs: Sbastien 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;

/** * <p>Classe reprsentant un rectangle.</p> * @author Sbastien ESTIENNE. */ public class Rectangle extends Point { // La longueur du rectangle. protected double longueur;

// La largeur du rectangle. protected double largeur; /** * <p>Constructeur par dfaut.</p> */ public Rectangle() { this(0.0, 0.0, 0.0, 0.0); } /** * <p>Constructeur de rectangle avec l'abscisse, l'ordonne, la longueur et la largeur * spcifis.</p> * @param x L'abscisse de la position du rectangle. * @param y L'ordonne 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); } /** * <p>Retourne la largeur du rectangle.</p> * @return Renvoie la largeur du rectangle. */ public double getLargeur() { return this.largeur; } /** * <p>Modifie la largeur du rectangle.</p> * @param largeur La largeur du rectangle. */ public void setLargeur(double largeur) { if(largeur < 0.0) this.largeur = 0.0; else this.largeur = largeur; } /** * <p>Retourne la longueur du rectangle.</p> * @return Renvoie la longueur du rectangle. */ public double getLongueur() { return this.longueur;

} /** * <p>Modifie la longueur du rectangle.</p> * @param longueur La longueur du rectangle. */ public void setLongueur(double longueur) { if(longueur < 0.0) this.longueur = 0.0; else this.longueur = longueur; } /** * <p>Calcule l'aire du rectangle.</p> * @return Retourne l'aire du rectangle. */ public double aire() { return this.getLongueur() * this.getLargeur(); } /** * <p>Retourne une reprsentation du rectangle.</p> * @return Renvoie une reprsentation du rectangle. */ @Override public String toString() { return "Rectangle[position:(" + this.getX() + ", " + this.getY() + ") , longueur:" + this.getLongueur() + ", largeur:" + this.getLargeur() + "]"; } }

/* * * * * * * * * * * * * * * * * *

Fichier: Parallelogramme.java Cre le: 29 janvier 2007. Auteurs: Sbastien 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 */ package chapitre8.parallelogramme;

02110-

/** * <p>Classe reprsentant un paralllogramme.</p> * @author Sbastien ESTIENNE. */ public class Parallelogramme extends Rectangle { // La hauteur du paralllogramme. protected double hauteur; /** * <p>Constructeur par dfaut.</p> */ public Parallelogramme() { this(0.0, 0.0, 0.0, 0.0, 0.0); } /** * <p>Constructeur de paralllogramme avec l'abscisse, l'ordonne, la lo ngueur, la largeur et la * hauteur spcifis.</p> * @param x L'abscisse de la position du paralllogramme. * @param y L'ordonne de la position du paralllogramme. * @param longueur La longueur du paralllogramme. * @param largeur La largeur du paralllogramme. * @param hauteur La hauteur du paralllogramme. */ public Parallelogramme(double x, double y, double longueur, double large ur, double hauteur) { super(x, y, longueur, largeur); this.setHauteur(hauteur); } /** * <p>Retourne la hauteur du paralllogramme.</p> * @return Renvoie la hauteur du paralllogramme. */ public double getHauteur() { return this.hauteur; } /** * <p>Modifie la hauteur du paralllogramme.</p> * @param hauteur La hauteur du paralllogramme. */ public void setHauteur(double hauteur) {

if(hauteur < 0.0) this.hauteur = 0.0; else this.hauteur = hauteur; } /** * <p>Calcule l'aire du paralllogramme.</p> * @return Retourne l'aire du paralllogramme. */ @Override public double aire() { return 2 * this.getLongueur() * this.getLargeur() + 2 * this.getLongu eur() * this.getHauteur() + 2 * this.getLargeur() * this.getHauteur() ; } /** * <p>Calcule le volume du paralllogramme.</p> * @return Retourne le volume du paralllogramme. */ public double volume() { return this.getLongueur() * this.getLargeur() * this.getHauteur(); } /** * <p>Retourne une reprsentation du paralllogramme.</p> * @return Renvoie une reprsentation du paralllogramme. */ @Override public String toString() { return "Paralllogramme[position:(" + this.getX() + ", " + this.getY( ) + "), longueur:" + this.getLongueur() + ", largeur:" + this.getLargeur() + ", ha uteur:" + this.getHauteur() + "]"; } }

/* * * * * * * * * * *

Fichier: TestParallelogramme.java Cre le: 29 janvier 2007. Auteurs: Sbastien 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;

/** * <p>Classe de test pour les classes Point, Rectangle et Parallelogramme.< /p> * @author Sbastien ESTIENNE. */ public class TestParallelogramme { /** * <p>Dbute l'excution du test.</p> * @param args Les paramtres 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()); // Paralllogramme. 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 prnom de la personne, * age: L'ge de la personne compris entre 0 et 130 ans, * sexe: Masculin ou Fminin.

La classe Personne doit disposer des constructeurs suivants:

* Personne(): constructeur par dfaut, * 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 diffrents attributs. Elle doit aussi contenir une mthode toString() donnant une reprsentation de la classe Personne. Ecrivez aussi une classe de testPersonne afin de tester la classe Personne.

Solution

/** * <p>Classe reprsentant une personne.</p> * @author Sbastien ESTIENNE. */ public class Personne { /** * <p>Le type Sexe.</p> */ public enum TSexe { /** * <p>Sexe: Masculin.</p> */ Masculin, /** * <p>Sexe: Fminin.</p> */ Feminin } // Nom de la personne.

private String nom; // Prnom de la personne. private String prenom; // Age de la personne. private int age; // Sexe de la personne. private TSexe sexe; /** * <p>Constructeur par dfaut d'une personne.</p> */ public Personne() { this("", "", 0, TSexe.Masculin); } /** * <p>Constructeur de personne avec un nom et un prnom spcifis.</p> * @param nom Le nom de la personne. * @param prenom Le prnom de la personne. */ public Personne(String nom, String prenom) { this(nom, prenom, 0, TSexe.Masculin); } /** * <p>Constructeur de personne avec un nom, un prnom et un ge spcifi s.</p> * @param nom Le nom de la personne. * @param prenom Le prnom de la personne. * @param age L'ge de la personne. */ public Personne(String nom, String prenom, int age) { this(nom, prenom, age, TSexe.Masculin); } /** * <p>Constructeur de personne avec un nom, un prnom, un ge et un sexe spcifis.</p> * @param nom Le nom de la personne. * @param prenom Le prnom 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); }

/** * <p>Constructeur de personne partir d'une personne existante.</p> * @param personne Une personne. */ public Personne(Personne personne) { this(personne.getNom(), personne.getPrenom(), personne.getAge(), pers onne.getSexe()); } /** * <p>Retourne l'ge de la personne.</p> * @return Renvoie l'ge de la personne. */ public final int getAge() { return this.age; } /** * <p>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.</p> la personne. age) 130)

/** * <p>Retourne le nom de la personne.</p> * @return Renvoie le nom de la personne. */ public final String getNom() { return this.nom; } /** * <p>Modifie le nom de la personne.</p> * @param nom Le nom de la personne. */ public void setNom(String nom) { this.nom = nom; } /** * <p>Retourne le prnom de la personne.</p> * @return Renvoie le prnom de la personne. */ public final String getPrenom() {

return this.prenom; } /** * <p>Modifie le prnom de la personne.</p> * @param prenom Le prnom de la personne. */ public void setPrenom(String prenom) { this.prenom = prenom; } /** * <p>Retourne le sexe de la personne.</p> * @return Renvoie le sexe de la personne. */ public final TSexe getSexe() { return this.sexe; } /** * <p>Modifie le sexe de la personne.</p> * @param sexe Le sexe de la personne. */ public void setSexe(TSexe sexe) { this.sexe = sexe; } /** * <p>Retourne une reprsentation d'une personne.</p> * @return Renvoie une reprsentation d'une personne. */ @Override public String toString() { String resultat; resultat = "Personne: {nom:" + this.getNom() + "; prnom:" + this.get Prenom() + "; ge:" + this.getAge() + " an(s); sexe:"; if(this.getSexe() == TSexe.Masculin) resultat += "Masculin}"; else resultat += "Fminin}"; return resultat; } }

/* * Fichier: TestPersonne.java

* Cre le: 13 janvier 2007. * Auteurs: Sbastien 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;

/** * <p>Classe permettant de tester la classe Personne.</p> * @author Sbastien ESTIENNE. */ public class TestPersonne { /** * <p>Dbute l'excution du test.</p> * @param args Les paramtres 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 ds

Post par admin le 10/03/2010 17:47:50 (59 lectures)

Ecrivez un applet qui simule grce des nombres alatoires un lancer de deux ds. Il existe 36 combinaisons et la somme des deux ds est comprise entre 2 et 12 avec certaines plus frquentes que d'autres. Simulez 36000 lancers et stockez la frquence de chaque somme dans un tableau. Affichez ensuite les rsultats dans une zone de texte et vrifiez que les frquences sont correctes. Ajoutez aussi un bouton afin de pouvoir effectuer de nouvelles sries de lancers de ds.

Frquence des possibilits:

* 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;

/** * <p>Calcule la frquence de la somme de lancers de deux ds.</p> * @author Sbastien ESTIENNE. */ public class JetDeDes extends JApplet implements ActionListener { /** * <p>Serial version UID.</p> */ private static final long serialVersionUID = 1L;

// Nombre de lancers. final int NB_LANCERS = 36000; // Tableau de frquence des sommes des lancers de ds. int[] tableau = new int[13]; // Chaine de caractre de sortie. String sortie = ""; // Zone de texte de sortie. JTextArea zoneSortie = new JTextArea(); // Bouton permettant d'effetuer une srie de lancers. JButton boutonLancer = new JButton("Lancer"); /** * <p>Initialise l'applet.</p> */ @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); } /** * <p>Traite une srie de lancers de ds.</p> * @param actionEvent Un vnement smantique qui indique qu'une action s'est produite dans le * composant concern. */ public void actionPerformed(ActionEvent actionEvent) { // Effectue la srie de lancers. lancer(); // Initialise le texte de sortie. this.sortie = "Frquence des rsultats des lancers de ds:\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); } /** * <p>Effectue une srie de lancers de ds.</p> */ public void lancer() { // Rsultats des lancers de ds.

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 ds. (int) (Math.random() * 6); (int) (Math.random() * 6);

// Ajoute le rsultat du lancer. this.tableau[d1 + d2]++; } } }

EXERCICES : Tri Bulle


Post par admin le 10/03/2010 17:46:38 (42 lectures)

Le tri de donnes est un problme 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 diffrentes valeurs adjacentes d'un tableau et les changer si besoin est. A chaque passage du tableau, un lment supplmentaire est tri. Le nombre de passages ncessaires pour trier le tableau dans son intgralit est donc de la taille du tableau moins un.) Amliorez le ensuite sachant qu' chaque passage supplmentaire une valeur de plus est trie la fin du tableau. Ainsi chaque passage le nombre de comparaisons ncessaires diminue de un. Il est possible que le tableau soit tri avant que tous les passages du tableau ne soient efectues. La deuxime amlioration consiste donc vrifier que si aucune permutation n'a t faite, d'arrter l'algorithme de tri.

Solution

import java.awt.Container; import javax.swing.JApplet; import javax.swing.JTextArea;

/** * <p>Tri bulle amlior.</p> * @author Sbastien ESTIENNE.

*/ public class TriBulle extends JApplet { /** * <p>Serial version UID.</p> */ private static final long serialVersionUID = 1L; /** * <p>Initialise l'applet.</p> */ @Override public void init() { // Tableau des valeurs trier. int tableau[] = {5, 56, 34, 43, 17, 25, 8, 65, 31, 52}; // Chaine de caractre 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 dpart du tableau. "Valeurs de dpart 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 trues du tableau. "\n\n"; "Valeurs tries du tableau:\n"; = 0; i < tableau.length; i++) += " " + tableau[i];

// Met jour la zone de sortie. zoneSortie.setText(sortie); } /** * <p>Effectue un tri bulle.</p> * @param tableau Les valeurs trier. */ public void triBulle(int tableau[]) { // Nombre de passages ncessaires 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 lment. for(int j = 0; j < tableau.length - i; j++) { // Compare une paire d'lments et les permutte si le premier e st suprieur 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; } } /** * <p>Permutte deux lments d'un tableau.</p> * @param tableau Le tableau concern. * @param i L'indice du premier lment. * @param j L'indice du second lment. */ 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 vrifie si un client (d'un magasin) a dpass sa limite de crdit sur son compte dbiteur. Pour chaque client, vous avez les donnes suivantes : - le numro de compte; - le solde au dbut du mois; - le total des articles ports en compte de ce client ce mois-ci; - le total de tous les crdits appliqus au compte de ce client ce mois-ci; - la limite de crdit autorise. L'utilisateur doit pouvoir saisir chaque donne sous forme d'entiers dans des botes de dialogue d'entre, calculer le nouveau solde (solde

dbut - dbits + crdits), afficher le nouveau solde et dterminer si le nouveau solde dpasse la limite de crdit du client (dans ce cas, il faut afficher le message "Limite de crdit dpasse" ).

Solution

import javax.swing.JOptionPane;

/** * <p>Gestion de comptes clients dans un magasin.</p> * @author Sbastien ESTIENNE. */ public class Client { /** * <p>Dbute l'excution de l'application.</p> * @param args Les paramtres de la ligne de commande. */ public static void main(String[] args) { // Entres de l'utilisateur: // Le numro du compte. String sNoCompte = ""; // Le solde au dbut du mois. String sSolde = ""; // Le total des articles ports en compte de ce client ce mois-ci. String sDebits = ""; // Le total de tous les crdits appliqus au compte de ce client ce m ois-ci. String sCredits = ""; // La limite de crdit autorise. String sLimite = ""; // Donnes entres par l'utilisateur converties. int noCompte = -1; double solde = 0, debits = 0, credits = 0, limite = 0; // Chaine de caractres pour l'affichage du nouveau solde. String sortie = ""; // Demander l'utilisateur le numero du compte. sNoCompte = JOptionPane.showInputDialog("Entrez le numro 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 gnre 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 Dbits, les Crdits, la Limite du compte. sSolde = JOptionPane.showInputDialog("Entrez le solde au dbut du mois :\n\n"); sDebits = JOptionPane.showInputDialog("Entrez le total des article s ports en " + "compte ce mois :\n\n"); sCredits = JOptionPane.showInputDialog("Entrez le total des crdit s appliqus " + "au compte ce mois :\n\n"); sLimite = JOptionPane.showInputDialog("Entrez la limite de crdit autorise " + ":\n\n"); // Convertir le Solde, les Dbits, les Crdits, 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 gnre 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 initialises 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 numro " + noCompte + " est : " + solde + ".\n"; // Vrifier si la limite de crdit a t dpasse. if(solde + limite < 0) // On modifie la chaine de sortie. sortie += "La limite de crdit est dpasse."; // Afficher le nouveau solde du compte pour ce mois. JOptionPane.showMessageDialog(null, sortie, "Solde du mois", JOptionPane.INFORMATION_MESSAGE);

// Demander l'utilisateur le numero du compte. sNoCompte = JOptionPane.showInputDialog("Entrez le numro du compt e (-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 gnre une except ion qui implique un // traitement particulier. catch(NumberFormatException e) { JOptionPane.showMessageDialog(null, "La valeur saisie est incorrecte, l'application va se ter miner.", "Erreur", JOptionPane.ERROR_MESSAGE); noCompte = -1; } } // Terminer l'application. System.exit(0); }

EXERCICES : Programme Bonjour


Post par admin le 10/03/2010 16:57:25 (322 lectures)

Ecrire un programme qui affiche l'cran l'expression "Bonjour!".

Solution

public class Bienvenue { /** * <p>Dbute l'excution de l'application.</p> * @param args Les paramtres de la ligne de commande. */ public static void main(String[] args) { System.out.println("Bienvenue!"); // Termine l'application. System.exit(0); } }