2020/2021 M. DIOP / M.
KHOUSSA
FICHE DE TP JAVA N°3
Définitions :
Notion d’objets et de Classe
- Objet :
Un objet est une entité concrète ou abstraite dans le monde réel (ou un élément du programme).
Il possède une identité, des états et des comportements.
Exemple : un objet « Télévision »
- L’identité représente ce qui peut différencier deux télévisions ;
- Ses états : {allumée/éteinte, chaine courant, volume son} ;
- Ses comportements : {allumer, changer de chaîne, changer de volume, éteindre}.
- Classe :
Une classe quant à elle représente une description abstraite d’un ensemble d’objets.
Niveaux de visibilité des membres d’une classe
Un membre de la classe peut être :
● private : accessible seulement à la classe
● package friendly (défaut) : accessible aux classes dans le même paquetage
● protected : accessible aux classes du paquetage et à toute classe dérivée en dehors du
paquetage
● public : accessible à toutes les classes
Exercice n°1 : Tableaux
1. Ecrire un programme Java qui permet d’initialiser un tableau d’entiers à n éléments.
Indication : La valeur de n est demandée à l’utilisateur. Faites la saisie en utilisant d’abord la classe
Scanner puis la classe Random ;
2. Ecrire une fonction qui permet d’afficher un tableau passé en paramètre ;
3. Ecrire une fonction qui retourne l’indice du minimum dans un tableau passé en
paramètre ;
4. Ecrire une fonction qui retourne l’indice du maximum dans un tableau passé en
paramètre ;
5. Tri d’un tableau L’idée du tri par sélection est de parcourir le tableau et à chaque étape de
partitionner le tableau en un sous-tableau trié et un sous tableau non trié, tel que tout
élément du sous-tableau trié soit inférieur ou égal à tout élément du sous-tableau non
trié. Un tableau est trié si tout élément du tableau est inférieur ou égal à l’élément
suivant ;
Le partitionnement se fait de la manière suivante : on recherche l’élément minimum dans
la partie non triée et on l’échange avec le premier élément de la partie non triée.
a. Ecrire un programme Java qui permet de trier un tableau. Indication : Vous
initialiserez le tableau et utiliserez la fonction définie dans la question 3.
b. Réécrire le programme en utilisant une fonction qui trie le tableau
6. Ecrire une fonction qui retourne le plus grand élément d'un tableau de double ;
1
2020/2021 M. DIOP / M. KHOUSSA
7. Une fonction qui fusionne deux tableaux d’entiers entre eux et renvoie un nouveau
tableau ;
8. Une fonction qui renvoie la moyenne des éléments d'un tableau d'entiers ;
9. Une fonction qui recherche un élément n dans un tableau d'entiers et retourne un
booléen.
Exercice n°2 : Modélisation
Voici un exemple de code :
class Etudiant {
}
Vous allez compléter le code de cette classe en lui ajoutant :
● Un attribut privé de type String nommé nom ;
● Un constructeur public qui a un paramètre de type String servant à initialiser le nom de
l'étudiant ;
● Une méthode publique sans paramètre et qui ne renvoie rien, nommée travailler, qui écrit
à l'écran, si le nom de l'étudiant est Moussa :
o Moussa se met au travail !
● Une méthode publique sans paramètre et qui ne renvoie rien, nommée seReposer, qui
écrit à l'écran, si le nom de l'étudiant est Moussa :
o Moussa se repose
Vous allez ensuite créer en dessous de la classe Etudiant une classe publique TestEtudiant (aussi
dans le même fichier) contenant une méthode main qui :
● Crée un étudiant (instance de la classe Etudiant) en lui donnant un nom écrit directement
dans le fichier source ;
● Invoque la méthode travailler de l'étudiant créé ;
● Invoque la méthode seReposer de l'étudiant créé.
●
Il faut alors exécuter ce programme, c'est-à-dire la méthode main de la classe TestEtudiant.
Si tout fonctionne, améliorer le programme en faisant en sorte que le nom de l'étudiant soit
indiqué comme argument de la méthode main.
Exercice n°3 : Point dans un repère orthonormé
Créer une classe permettant de manipuler un point d’un axe, repéré par une abscisse (de type int).
On devra pouvoir effectuer des changements d’origine, en conservant en permanence l’abscisse
d’une origine courante (initialement 0). On prévoira simplement les méthodes suivantes :
- constructeur, recevant en argument l’abscisse « absolue » du point (c’est-à-dire repérée
par rapport au point d’origine 0 et non par rapport à l’origine courante),
- affiche qui imprime à la fois l’abscisse de l’origine courante et l’abscisse du point par
rapport à cette origine,
- setOrigine qui permet de définir une nouvelle abscisse pour l’origine (exprimée de façon
absolue et non par rapport à l’origine courante),
- getOrigine qui permet de connaître l’abscisse de l’origine courante.
2
2020/2021 M. DIOP / M. KHOUSSA
Ecrire un petit programme de test fournissant les résultats suivants :
Point a - abscisse = 3
// Relative à une origine d'abscisse 0
Point b - abscisse = 12
// Relative à une origine d'abscisse 0
On place l'origine en 3
Exercice n°4 : Gestion d’une classe
On souhaite élaborer une structure de données permettant de suivre un élève.
On souhaite y ranger le nom de l'élève, son prénom, son sexe, ses notes en informatique, en
maths et en anglais.
1. Ecrire en Java le programme qui permet de créer cette structure de données avec les
accesseurs, un constructeur sans et avec paramètre.
2. Ecrire le corps de la fonction void créerEleve (Élève E) qui permet d’initialiser les attributs d’un
élève E passé en paramètre M. On souhaite maintenant gérer une classe d'élèves. On veut stocker
le nom de la classe, le nombre d'élèves de la classe, la promotion (l'année de sortie), et la liste des
élèves de la classe
3. Ecrire en Java le programme permettant de créer cette structure de données avec les
accesseurs, un constructeur sans et avec paramètre.
4. Ecrire une fonction void créerClasse (Classe C) qui permet d’initialiser les attributs d’une classe
C passée en paramètre 5. En utilisant la fonction définie dans (4), écrire un programme
permettant d’initialiser un tableau de n classes.