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

Exercices en Java (08-Programmation orientée objet)

Ce huitième chapitre concerne la programmation orientée objet.
Le premier exercice « Parallélépipède » et le deuxième exercice « Bâtiment » illustrent le principe de l'héritage. L'exercice « Figure » et « Employé » portent sur la notion de classes abstraites. Le cinquième exercice « Forme » montre l'utilisation des interfaces. Le sixième exercice « GeoVecteur » utilise des méthodes statiques. Le septième exercice « Événement » porte sur la notion de classe interne.

Les principales notions abordées sont les suivantes :

  • Modificateurs d'accès ;
  • Héritage ;
  • Super classe et sous-classe ;
  • Réutilisabilité logicielle ;
  • Polymorphisme ;
  • Édition dynamique des liens ;
  • Classes abstraites ;
  • Interfaces ;
  • Classes internes.

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/

Article lu   fois.

L'auteur

Profil ProSite personnel

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

I. Parallélépipède

I-1. Énoncé

Écrivez 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 (get) et mutateurs (set) et aussi une méthode toString() donnant une représentation du point.

Écrivez une classe Rectangle héritant 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() ;
  • Rectangle(x, y, longueur, largeur).

La classe Rectangle doit contenir des accesseurs (get) et mutateurs (set) et aussi les méthodes suivantes :

  • aire() : donne l'aire du rectangle ;
  • toString() : donne une représentation du rectangle (surcharge).

Écrivez une classe Parallelepipede héritant de Rectangle avec les attributs suivants :

  • hauteur : la hauteur du parallélépipède.

La classe Parallelepipede doit disposer des constructeurs suivants :

  • Parallelepipede() ;
  • Parallelepipede(x, y, longueur, largeur, hauteur).

La classe Parallelepipede doit contenir des accesseurs (get) et mutateurs (set) et aussi les méthodes suivantes :

  • aire() : donne l'aire du parallélépipède (surcharge) ;
  • volume() : donne le volume du parallélépipède ;
  • toString() : donne une représentation du parallélépipède (surcharge).

Écrivez aussi une classe TestParallelepipede afin de tester les classes.

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

parallelepipede/Point.java
TéléchargerCacher/Afficher le codeSélectionnez
parallelepipede/Rectangle.java
TéléchargerCacher/Afficher le codeSélectionnez
parallelepipede/Parallelepipede.java
TéléchargerCacher/Afficher le codeSélectionnez
parallelepipede/TestParallelepipede.java
TéléchargerCacher/Afficher le codeSélectionnez

II. Bâtiment

II-1. Énoncé

Écrivez une classe Batiment avec les attributs suivants :

  • adresse : l'adresse du bâtiment.

La classe Batiment doit disposer des constructeurs suivants :

  • Batiment() ;
  • Batiment(adresse).

La classe Batiment doit contenir des accesseurs (get) et mutateurs (set) pour les différents attributs. La classe Batiment doit contenir une méthode toString() donnant une représentation du bâtiment.

Écrivez une classe Maison héritant de Batiment 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 (get) et mutateurs (set) pour les différents attributs. La classe Maison doit contenir une méthode toString() donnant une représentation de la maison.

Écrivez une classe Immeuble héritant de Bâtiment 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 (get) et mutateurs (set) pour les différents attributs. La classe Immeuble doit contenir une méthode toString() donnant une représentation de l'immeuble.

Écrivez aussi une classe TestBatiment afin de tester les classes.

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

batiment/Batiment.java
TéléchargerCacher/Afficher le codeSélectionnez
batiment/Maison.java
TéléchargerCacher/Afficher le codeSélectionnez
batiment/Immeuble.java
TéléchargerCacher/Afficher le codeSélectionnez
batiment/TestBatiment.java
TéléchargerCacher/Afficher le codeSélectionnez

III. Figure

III-1. Énoncé

Écrivez une classe abstraite Figure avec les attributs suivants :

  • nom : le nom de la figure.

La classe Figure doit contenir des accesseurs (get) 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.

Écrivez une 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 (get) et mutateurs (set) pour les différents attributs et les méthodes suivantes :

  • aire() : donne l'aire du disque ;
  • toString(): donne une représentation du disque.

Écrivez une classe Rectangle héritant 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 (get) et mutateurs (set) pour les différents attributs et les méthodes suivantes :

  • aire() : donne l'aire du rectangle ;
  • toString() : donne une représentation du rectangle.

Écrivez aussi une classe TestFigure afin de tester les classes.
Utilisez les propriétés du polymorphisme.

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

figure/Figure.java
TéléchargerCacher/Afficher le codeSélectionnez
figure/Disque.java
TéléchargerCacher/Afficher le codeSélectionnez
figure/Rectangle.java
TéléchargerCacher/Afficher le codeSélectionnez
figure/TestFigure.java
TéléchargerCacher/Afficher le codeSélectionnez

IV. Employé

IV-1. Énoncé

Écrivez 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 (get) et mutateurs (set) pour les différents attributs et les méthodes suivantes :

  • toString() : retourne une représentation d'un employé ;
  • gains() : retourne le salaire (abstraite).

Écrivez une classe Patron héritant de Employe 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 (get) et mutateurs (set) pour les différents attributs et les méthodes suivantes :

  • toString() : retourne une représentation du patron ;
  • gains() : retourne le salaire du patron.

Écrivez une classe TravailleurCommission héritant de Employe 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 (get) et mutateurs (set) pour les différents attributs et les méthodes suivantes :

  • toString() : retourne une représentation du travailleur à la commission ;
  • gains() : retourne la rétribution totale du travailleur à la commission.

Écrivez une classe TravailleurHoraire héritant de Employe avec les attributs suivants :

  • retribution : la rétribution 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 (get) et mutateurs (set) pour les différents attributs et les méthodes suivantes :

  • toString() : retourne une représentation du travailleur horaire ;
  • gains() : retourne la rétribution totale du travailleur horaire.

Écrivez aussi une classe TestEmploye afin de tester les classes.
Utilisez les propriétés du polymorphisme.

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

employe/Employe.java
TéléchargerCacher/Afficher le codeSélectionnez
employe/Patron.java
TéléchargerCacher/Afficher le codeSélectionnez
employe/TravailleurCommission.java
TéléchargerCacher/Afficher le codeSélectionnez
employe/TravailleurHoraire.java
TéléchargerCacher/Afficher le codeSélectionnez
employe/TestEmploye.java
TéléchargerCacher/Afficher le codeSélectionnez

V. Forme

V-1. Énoncé

Écrivez une interface Forme avec les méthodes abstraites suivantes :

  • perimetre() : renvoie le périmètre de la forme ;
  • aire() : renvoie l'aire de la forme.

Écrivez une classe Carre implémentant l'interface Forme avec les attributs suivants :

  • cote : le côté du carré.

La classe Carre doit disposer des constructeurs suivants :

  • Carre() ;
  • Carre(cote).

La classe Carre doit contenir des accesseurs (get) et mutateurs (set) pour les différents attributs et les méthodes suivantes :

  • perimetre() : donne le périmètre du carré ;
  • aire() : donne l'aire du carré ;
  • toString() : donne une représentation du carré.

Écrivez aussi une classe TestForme afin de tester les classes.

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

forme/Forme.java
TéléchargerCacher/Afficher le codeSélectionnez
forme/Carre.java
TéléchargerCacher/Afficher le codeSélectionnez
forme/TestForme.java
TéléchargerCacher/Afficher le codeSélectionnez

VI. GéoVecteur

VI-1. Énoncé

Écrivez une classe finale GeoVecteur avec les méthodes statiques suivantes :

  • longueur(ux, uy, uz) : renvoie la longueur du vecteur ;
  • produitScalaire(ux, uy, uz, vx, vy, vz) : retourne le produit scalaire de deux vecteurs ;
  • produitVectoriel(ux, uy, uz, vx, vy, vz) : retourne le produit vectoriel de deux vecteurs.

Écrivez aussi une classe TestVecteur afin de tester les classes.

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

geovecteur/GeoVecteur.java
TéléchargerCacher/Afficher le codeSélectionnez
geovecteur/TestVecteur.java
TéléchargerCacher/Afficher le codeSélectionnez

VII. Événement

VII-1. Énoncé

Écrivez une application graphique avec une fenêtre (JFrame) contenant deux boutons (JButton). Écrivez ensuite une classe interne pour la gestion des événements du premier bouton et une classe interne anonyme pour le second bouton.
Affichez une boîte de dialogue afin de signaler l'action effectuée sur le bouton.

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

evenement/Evenement.java
TéléchargerCacher/Afficher le codeSélectionnez

VIII. Remerciements

Je tiens à remercier millie, Ricky81 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.