Vous êtes sur la page 1sur 4

Prépa Examens en java

SPECIALITE : 3IL II A et B

MATIERE : Programmation en Java

Enseignant : FUSHE Serge Alain Année scolaire : 2017/2018

Exercice 1 :
Définissez une classe Complexe, pour représenter les nombres de l’ensemble ℂ . Un objet
complexe aura deux attributs, une partie réelle et une partie imaginaire : a+ ib.
Vous définirez un constructeur par défaut qui initialisera les deux attributs à zéro, ainsi qu’un
constructeur qui initialisera un nombre complexe à partir de deux paramètres réels.
Écrire une méthode toString(). La méthode toString permet la conversion d’un objet de type
complexe en une chaîne de caractères. Elle sera utilisée implicitement par certaines méthodes,
par exemple System.out.println. Ainsi l’appel à la méthode System.out.println(c) ; avec c de type
complexe utilisera la méthode toString() de la classe Complexe.
Exercice 2 :
Toutou est une classe avec deux propriétés privées String nom et int nombrePuces.
Écrire un constructeur public Toutou (String n, int np) qui propage des exceptions de type
IllegalArgumentException lorsque le nom n est null ou lorsque le nombre de puces np est négatif.
Utiliser ce constructeur dans une méthode main pour contrôler les appels new Toutou ("milou",
4) et new Toutou ("medor", -11) et afficher les erreurs éventuelles lors de l’exécution des
constructeurs.
Exercice 3 :
Les organisateurs des jeux olympiques London 2012 souhaitent informatiser la gestion de cet
événement. Dans ce sujet on s’intéresse en particulier aux épreuves1 et à la gestion de leurs
résultats.
Athlètes Les jeux olympiques réunissent des athlètes issus de très nombreux pays. La liste de
ces pays est fixée et connue à l’avance.
Q 1. Comment proposez-vous de représenter les pays ? Donnez le code java correspondant
à votre proposition en supposant qu’il n’y a que 3 pays impliqués : la France, la Belgique et
l’Angleterre. Les athlètes sont identifiés par leur nom, leur prénom et le pays pour lequel ils
concourrent.
Q 2. Donnez le code java d’une classe Athlete pour laquelle on disposera des méthodes
accesseurs, d’une méthode toString reprenant les informations et une méthode equals, deux
athlètes étant égaux s’ils ont même nom, prénom et nationalité.
Exercice 4 :
1. Écrire la classe Ensemble comme étant une collection d'éléments ne contenant pas de
doublon. Elle sera donc implémentée à l'aide d'une ArrayList d'Object et de ses
méthodes (voir annexe).
2. Cette classe doit permettre l'utilisation des opérations suivantes :
 estVide() : retourne true si l'ensemble est vide ou false sinon ;
 taille() : retourne le nombre d'éléments dans l'ensemble ;
 contient(…) : retourne true si l'élément passé en paramètre appartient à l'ensemble
ou false sinon ;
 obtenir(…) : renvoie l'élément situé à l'emplacement envoyé en paramètre ;
 ajouter(…) : ajoute un élément à l'ensemble et renvoie un booléen indiquant si l'ajout
a réussi (on rappelle qu'il n'y a jamais de doublon dans un ensemble) ;
 copie() : retourne un ensemble contenant les mêmes éléments ;
 retournerEnlever(…) : retourne l'élément de l’ensemble situé à l'emplacement
indiqué en paramètre (ou null si l'élément n'est pas présent) et l’enlève de
l’ensemble ;
 intersection(…) : renvoie un nouvel ensemble ne contenant que les éléments
contenus à la fois dans l'ensemble courant et dans l'ensemble envoyé en paramètre.
3. Écrire un programme pour tester l'implémentation.
4. Modifier la classe Bureau en utilisant la classe Ensemble plutôt qu'un tableau pour
représenter l'ensemble des garages liés à un bureau.
5. Ajouter une méthode contient(…) à Bureau qui renvoie true si le bureau contient le
garage envoyé en paramètre ou false sinon.
6. Dans la méthode main(), créer deux garages identiques g0 et g0b (tous leurs attributs
sont équivalents). Ajouter g0 à un bureau et vérifier si ce bureau contient g0b.
7. Redéfinir la méthode equals(Object) pour la classe Garage de telle manière que g0 et g0b
soient équivalents et revérifier si le bureau contient g0b.

Exercice 5 :
On souhaite implémenter un annuaire électronique, qui donne pour chaque nom de contact, ses
coordonnées (N°tel & Adresse).
1) Définir la classe Coordonnees, composée des 2 attributs Tel et Adr et implémentant un
constructeur par défaut ainsi que des accesseurs pour ses attributs.
2) Définir la classe Annuaire qui gère l’annuaire électronique à l’aide d’une collection de type
HashMap. Cette collection associe à chaque nom, un objet de type Coordonnees. La classe
Annuaire implémente les méthodes suivantes :
- Ajout (String N, Coordonnees C) : Ajout d’un nouveau contact
- AffichCoord (String N): Affichage des coordonnées d’un contact donné.
- ModifCoord (String N): Modification des coordonnées d’un contact donné.
- Suppression (String N): Suppression d’un contact donné.
- ListerNoms (): Affichage de la liste des contacts (tous les noms).
- ListerTel ():Affichage de la liste des N°de Tel disponibles dans l’annuaire.
- ListerAdr ():Affichage de la liste des Adresses disponibles dans l’annuaire.
- AffichAnnuaire ():Affichage de la totalité de l’annuaire.
3) Écrire un programme principal, présentant un menu pour la gestion d’un annuaire
électronique.
Exercice 6 : Un premier IHM
1) Quelle est la fenêtre racine d’un IHM ? Quel est le conteneur racine associé à cette
fenêtre ? Quel est le gestionnaire d’agencement (layout manager) par défaut associé à ce
conteneur ? Rappeler par un dessin comment ce gestionnaire dispose les composants.
2) Créer une telle fenêtre racine que l’on appellera cadreglobal objet JFrame
Comment ferme-t-on « proprement » une fenêtre ?
3) Rappeler ce que vous savez de la classe JPanel.
4) Compléter cadreglobal en mettant à l’est un panneau « boiteBoutonsDéplacements »
(instance de JPanel), au sud un panneau « boiteBoutonsJeu » et au centre un panneau
« panneauDessin ».
Que constatez-vous si vous affichez l’interface ? Colorer ces panneaux en vert à l’estet en
rouge au sud, grâce à la méthode setBackground(Color.green)
5) Quelle est la classe SWING du composant bouton ? Quel est le gestionnaire d’agencement par
défaut d’un objet
JPanel ?
Ajouter au panneau « boiteBoutonsDéplacements » 4 boutons (pour les déplacements dans les
quatre directions (à Droite, à Gauche, en Haut, en Bas).
Ajouter au panneau « boiteBoutonsJeu », 2 boutons « Accélérer », « Ralentir ».
6) Quelle est la classe SWING du composant étiquette ? d’une zone de saisie de texte ?
Ajouter au panneau « panneauDessin » le texte : « ceci sera ma zone de dessin »
En attendant de savoir dessiner…ajouter ensuite une zone de saisie de texte de 10 lignes et 20
colonnes.
Modifier la forme de la fenêtre que constate-t-on ? en particulier dans le panneau central ?
Pourquoi ?
7) Modifier le gestionnaire d’agencement du panneau "est" de façon à regrouper les 4 boutons 2
par 2 sur 2 lignes. Quel gestionnaire faut-il choisir ? Quels inconvénients apparaissent ?
Quel autre gestionnaire choisir pour une meilleure disposition ?
Comparer les résultats. Faites des essais pour l’améliorer
8) Dessiner l’arborescence des composants graphiques de cet interface
Exercice 7 : Exemple de JFrame
1) Écrire une classe SimpleFrame permettant d'afficher une fenêtre.
On lui donnera simplement un titre et une taille minimale.
2) Changer le comportement par défaut de la fenêtre lors de sa fermeture pour que
l'application soit quittée.
3) Dans un second temps, ajouter à cette fenêtre un label, représentant une étiquette (un
texte court). Récuperer le conteneur correspondant à l'espace client de la fenêtre avec la
méthode getContentPane, et ajouter le label à ce conteneur.
4) Centrer le texte du label en utilisant la méthode setHorizontalAlignment.
5) L'algorithme de placement des composants de la fenêtre est, pour une JFrame, géré par la
classe BorderLayout. En lisant attentivement la description de la méthode add(Component,
Object) de la classe Container, ajouter un bouton "OK" au-dessous du label.
Exercice 8 : À la découverte de nouveaux composants
1) Créer une nouvelle JFrame nommée "Découverte" et y inclure les composants suivants :
• un bouton
• un champ de texte
• une zone de texte
2) Ajouter une bulle d'aide contextuelle (setToolTipText()) sur le bouton ; rendre le bouton
inopérant; changer la couleur du texte et du fond du bouton.
3) Ajouter un texte dans le champ de texte et dans la zone de texte; rendre le champ de texte
non éditable.
4) Ajouter une bordure au champ de texte en fournissant un objet type
javax.swing.border.Border créé via une méthode de la classe javax.swing.BorderFactory, par
exemple la méthode createLineBorder(Color color, int thickness).

Exercice 9 :
1. Définir une exception ExceptionNegatif. Cette classe aura simplement un attribut entier
valeur et un constructeur avec un paramètre entier (correspondant à valeur).
2. Ecrire le code permettant de lever l’exception dans une méthode appelée factoriel si le
paramètre passé à la méthode est négatif.
3. Ecrire le code permettant de récupérer l’exception et d’afficher la valeur (négative) ayant
conduit à sa levée. On considère que la méthode factoriel se trouve dans la classe Calcul.
Exercice 10 : Interfaces graphiques
On souhaite définir un nouveau composant qui se comporterait comme un bouton mais qui
serait
autonome du point de vue des traitements à effectuer en cas d’actionnement de celui-ci.
Ce bouton est associé à une figure qui sera définie lors de son instanciation.
On suppose définie dans la classe figure une méthode saisie() qui affiche une interface graphique
permettant la saisie des attributs de la figure.
Lorsque l’on clique sur le bouton celui-ci demande la saisie des attributs de la figure, puis
demande
un réaffichage du composant.
1. Rappelez le type d’évènement généré lors du clic sur un bouton.
2. Écrivez la déclaration de ce nouveau type de composant (entête de la classe et attributs).
3. Écrivez le constructeur de la classe.
4. Écrivez la méthode appelée lors du clic sur le composant.
5. Quelle méthode est appelée lors de l’affichage du composant ? Quel est le paramètre passé à
cette méthode et à quoi sert-il ?
6. Illustrez l’utilisation de ce type de composant (instanciation et ajout dans un JFrame par
exemple)
Exercice 11 : Les interfaces graphiques

1. Expliquer brièvement le fonctionnement de l’interaction entre un utilisateur et une interface


graphique en java.
2. On souhaite coder dans un unique fichier une interface graphique possédant un bouton
appelé inverse qui affiche alternativement « Bonjour » et « Au revoir » dans un Jlabel (pour
changer le texte du Jlabel on utilise la méthode setText() prenant en paramètre une chaîne
de caractère).
Exercice 12 : Thread
On considère que plusieurs threads peuvent ajouter des figures dans une même liste appelée
listeFig. Pour cela ils utilisent la méthode public void add(Figure f).
1. Donner la déclaration et l’instanciation de listFig.
2. Donner le code de la méthode add()
3. Comment peut-on éviter qu’il y ait des conflits entre les différents threads lors de l’ajout des
figures dans la liste ?
4. On ajoute un thread donc la fonction est de parcourir la liste des figures et de supprimer les
figures trop proches. Coder la méthode filtrer() qui filtre la liste et renvoie le nombre
d’éléments supprimés.

Vous aimerez peut-être aussi