IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Exercices en Java (07-Programmation basée sur les objets)

Ce septième chapitre concerne la programmation basée sur les objets.
Il comporte huit exercices. Le premier exercice illustre la notion de classe et se nomme « Livre ». Le deuxième exercice est une classe portant sur le « Temps ». Les troisième et quatrième exercices sont deux classes faisant appel à quelques notions simples d'arithmétique. Les cinquième et sixième exercices sont des classes portant sur de la géométrie : « Rectangle » et « Point ». Les deux derniers exercices font intervenir la notion d'énumération.

Les principales notions abordées sont les suivantes :

  • La notion d'encapsulation ;
  • Le masquage des données ;
  • Abstraction de données et types de données abstraits ;
  • Notion de classe ;
  • Constructeur et surcharge de constructeurs ;
  • Variables et méthodes d'une classe ;
  • Variables et méthodes statiques ;
  • Création, modification et suppression d'objets ;
  • Accès aux variables d'instances et aux méthodes ;
  • Accesseurs et mutateurs ;
  • La référence this ;
  • Les énumérations (Java 5.0).

Pour faire et comprendre ces exercices, vous aurez besoin d'un certain nombre de notions sur le Java en rapport avec le chapitre. Pour cela, vous pouvez consulter les tutoriels java de developpez à l'adresse suivante : https://java.developpez.com/cours/Cours en Java

La documentation de l'API sur le site de Sun est aussi une mine d'or : http://java.sun.com/javase/6/docs/api/Doc API Java.

Article lu   fois.

L'auteur

Profil ProSite personnel

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

I. Livre

I-1. Énoncé

Écrivez une classe Livre avec les attributs suivants :

  • titre : le titre du livre ;
  • auteur : l'auteur du livre ;
  • prix : le prix du livre ;
  • annee : l'année du livre.

La classe Livre doit disposer des constructeurs suivants :

  • Livre() ;
  • Livre(titre) ;
  • Livre(titre, auteur) ;
  • Livre(titre, auteur, prix) ;
  • Livre(titre, auteur, prix, annee) ;
  • Livre(Livre).

La classe Livre doit contenir des accesseurs (get) et mutateurs (set) pour les différents attributs. Elle doit aussi contenir une méthode toString() donnant une représentation de la classe Livre.
Écrivez aussi une classe TestLivre afin de tester la classe Livre.

Classes de l'API utilisées :

I-2. Aperçu

Image d'aperçu.
Aperçu du résultat.

I-3. Démonstration


Note : javaws -viewer (accessible aussi dans le panneau de configuration Java) permet de voir les différentes applications JWS en cache et de les gérer.

I-4. Solution

livre/Livre.java
TéléchargerCacher/Afficher le codeSélectionnez
livre/TestLivre.java
TéléchargerCacher/Afficher le codeSélectionnez

II. Temps

II-1. Énoncé

Écrivez une classe Temps avec les attributs suivants :

  • heures : De 0 à 23 ;
  • minutes : De 0 à 59 ;
  • secondes : De 0 à 59.

La classe Temps doit disposer des constructeurs suivants :

  • Temps() ;
  • Temps(heures) ;
  • Temps(heures, minutes) ;
  • Temps(heures, minutes, secondes) ;
  • Temps(Temps).

La classe Temps doit contenir des accesseurs (get) et mutateurs (set) pour les différents attributs.

Elle doit aussi contenir les méthodes :

  • ajouterHeures(heures) : ajoute « heures » au temps courant ;
  • ajouterMinutes(minutes) : ajoute « minutes » au temps courant ;
  • ajouterSecondes(secondes) : ajoute « secondes » au temps courant ;
  • toString() : donne une représentation de la classe Temps.

Écrivez aussi une classe TestTemps afin de tester la classe Temps.

Classes de l'API utilisées :

II-2. Aperçu

Image d'aperçu.
Aperçu du résultat.

II-3. Démonstration


Note : javaws -viewer (accessible aussi dans le panneau de configuration Java) permet de voir les différentes applications JWS en cache et de les gérer.

II-4. Solution

temps/Temps.java
TéléchargerCacher/Afficher le codeSélectionnez
temps/TestTemps.java
TéléchargerCacher/Afficher le codeSélectionnez

III. Complexe

III-1. Énoncé

Écrivez une classe Complexe représentant des nombres complexes. Un nombre complexe comporte une partie réelle et une partie imaginaire (partieReelle + partieImaginaire * i avec i = racine(-1)).

La classe a les attributs suivants :

  • partieReelle : La partie réelle du nombre ;
  • partieImaginaire : La partie imaginaire du nombre.

La classe Complexe doit disposer des constructeurs suivants :

  • Complexe() ;
  • Complexe(partieReelle, partieImaginaire) ;
  • Complexe(Complexe).

La classe Temps doit contenir des accesseurs (get) et mutateurs (set) pour les différents attributs.

Elle doit aussi contenir les méthodes :

  • ajouter(Complexe) : addition de deux nombres complexes ;
  • soustraire(Complexe) : soustraction de deux nombres complexes ;
  • toString() : donne une représentation d'un nombre complexe (a+b*i).

Écrivez aussi une classe TestComplexe afin de tester la classe Complexe.

Classes de l'API utilisées :

III-2. Aperçu

Image d'aperçu.
Aperçu du résultat.

III-3. Démonstration


Note : javaws -viewer (accessible aussi dans le panneau de configuration Java) permet de voir les différentes applications JWS en cache et de les gérer.

III-4. Solution

complexe/Complexe.java
TéléchargerCacher/Afficher le codeSélectionnez
complexe/TestComplexe.java
TéléchargerCacher/Afficher le codeSélectionnez

IV. Rationnel

IV-1. Énoncé

Écrivez une classe Rationnel qui définit les nombres rationnels. Les fractions doivent être stockées de manière irréductible.

La classe a les attributs suivants :

  • numerateur : Le numérateur ;
  • denominateur : Le dénominateur.

La classe Rationnel doit disposer des constructeurs suivants :

  • Rationnel() ;
  • Rationnel(numerateur, denominateur) ;
  • Rationnel(Rationnel).

La classe Rationnel doit contenir des accesseurs (get) et mutateurs (set) pour les différents attributs.

Elle doit aussi contenir les méthodes :

  • ajouter(Rationnel) : addition de deux nombres rationnels ;
  • soustraire(Rationnel) : soustraction de deux nombres rationnels ;
  • multiplier(Rationnel) : multiplication de deux nombres rationnels ;
  • diviser(Rationnel) : division de deux nombres rationnels ;
  • evaluer() : renvoie le résultat sous la forme d'un nombre réel ;
  • toString() : donne une représentation du rationnel (a/b).

Écrivez aussi une classe TestRationnel afin de tester la classe Rationnel.

Classes de l'API utilisées :

IV-2. Aperçu

Image d'aperçu.
Aperçu du résultat.

IV-3. Démonstration


Note : javaws -viewer (accessible aussi dans le panneau de configuration Java) permet de voir les différentes applications JWS en cache et de les gérer.

IV-4. Solution

rationnel/Rationnel.java
TéléchargerCacher/Afficher le codeSélectionnez
rationnel/TestRationnel.java
TéléchargerCacher/Afficher le codeSélectionnez

V. Rectangle

V-1. Énoncé

Écrivez une classe Rectangle qui définit un rectangle.

La classe a 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) ;
  • Rectangle(Rectangle).

La classe Rectangle doit contenir des accesseurs (get) et mutateurs (set) qui vérifient que les valeurs sont positives pour les différents attributs.

Elle doit aussi contenir les méthodes :

  • perimetre() : calcule le périmètre du rectangle qui est égal à 2 * (longueur + largeur) ;
  • aire() : calcule l'aire du rectangle qui est égal à longueur * largeur ;
  • isCarre() : vérifie si le rectangle est un carré ;
  • toString() : donne une représentation du rectangle.

Écrivez aussi une classe TestRectangle afin de tester la classe Rectangle.

Classes de l'API utilisées :

V-2. Aperçu

Image d'aperçu.
Aperçu du résultat.

V-3. Démonstration


Note : javaws -viewer (accessible aussi dans le panneau de configuration Java) permet de voir les différentes applications JWS en cache et de les gérer.

V-4. Solution

rectangle/Rectangle.java
TéléchargerCacher/Afficher le codeSélectionnez
rectangle/TestRectangle.java
TéléchargerCacher/Afficher le codeSélectionnez

VI. Point

VI-1. Énoncé

Écrivez une classe Point qui définit un point.

La classe a les attributs suivants :

  • x : l'abscisse du point ;
  • x : l'ordonnée du point.

La classe Point doit disposer des constructeurs suivants :

  • Point() ;
  • Point(x, y) ;
  • Point(Point).

La classe Point doit contenir des accesseurs (get) et mutateurs (set) pour les différents attributs.

Elle doit aussi contenir les méthodes :

  • distance(x, y) : calcule la distance entre deux points ;
  • distance(Point) : calcule la distance entre deux points ;
  • distance(x1, y1, x2, y2) : calcule la distance entre deux points ;
  • deplacer(x, y) : déplace le point ;
  • translater(dx, dy) : translate le point ;
  • toString() : donne une représentation du point.

Écrivez aussi une classe TestPoint afin de tester la classe Point.

Classes de l'API utilisées :

VI-2. Aperçu

Image d'aperçu.
Aperçu du résultat.

VI-3. Démonstration


Note : javaws -viewer (accessible aussi dans le panneau de configuration Java) permet de voir les différentes applications JWS en cache et de les gérer.

VI-4. Solution

point/Point.java
TéléchargerCacher/Afficher le codeSélectionnez
point/TestPoint.java
TéléchargerCacher/Afficher le codeSélectionnez

VII. Jeu de cartes

VII-1. Énoncé

Écrivez une classe Carte avec les éléments suivants :

  • Enumération Rang : AS, ROI…, 3, 2 ;
  • Enumération Couleur : Pique, Cœur, Carreau, Trèfle ;
  • rang : le rang de la carte ;
  • couleur : la couleur de la carte.

La classe Carte doit disposer du constructeur suivant :

  • Carte(Rang, Couleur).

La classe Carte doit contenir des accesseurs (get) et mutateurs (set) pour les différents attributs. Elle doit aussi contenir une méthode toString() donnant une représentation de la classe Carte.

Écrivez une deuxième classe Paquet avec les attributs suivants :

  • cartes : tableau de cartes.

La classe Paquet doit disposer d'un constructeur par défaut initialisant le paquet de cartes et le mélangeant. Cette classe doit aussi disposer des méthodes suivantes :

  • melanger() : mélange le paquet de cartes ;
  • getNombreDeCartes() : retourne le nombre de cartes du paquet ;
  • piocher(n) : renvoie les n premières cartes du paquet.

Écrivez aussi une classe TestJeuDeCartes afin de tester les classes Carte et Paquet.

Classes de l'API utilisées :

VII-2. Aperçu

Image d'aperçu.
Aperçu du résultat.

VII-3. Démonstration


Note : javaws -viewer (accessible aussi dans le panneau de configuration Java) permet de voir les différentes applications JWS en cache et de les gérer.

VII-4. Solution

jeudecartes/Carte.java
TéléchargerCacher/Afficher le codeSélectionnez
jeudecartes/Paquet.java
TéléchargerCacher/Afficher le codeSélectionnez
jeudecartes/TestJeuDeCartes.java
TéléchargerCacher/Afficher le codeSélectionnez

VIII. Personne

VIII-1. Énoncé

Écrivez 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() ;
  • Personne(nom, prenom) ;
  • Personne(nom, prenom, age) ;
  • Personne(nom, prenom, age, sexe) ;
  • Personne(Personne).

La classe Personne doit contenir des accesseurs (get) et mutateurs (set) pour les différents attributs. Elle doit aussi contenir une méthode toString() donnant une représentation de la classe Personne.
Écrivez aussi une classe TestPersonne afin de tester la classe Personne.

Classes de l'API utilisées :

VIII-2. Aperçu

Image d'aperçu.
Aperçu du résultat.

VIII-3. Démonstration


Note : javaws -viewer (accessible aussi dans le panneau de configuration Java) permet de voir les différentes applications JWS en cache et de les gérer.

VIII-4. Solution

personne/TSexe.java
TéléchargerCacher/Afficher le codeSélectionnez
personne/Personne.java
TéléchargerCacher/Afficher le codeSélectionnez
personne/TestPersonne.java
TéléchargerCacher/Afficher le codeSélectionnez

IX. Remerciements

Je tiens à remercier Ricky81, Hikage, djo.mos pour les conseils, remarques et relectures.
Je remercie aussi www.developpez.com me permettant de publier cet article et Nono40 pour ses outils.

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2007 Sébastien ESTIENNE. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.