47 1 2MB
Travaux pratiques JAVA : Série N° : 4 Filières : SMI, IGE: S5 Module : POO JAVA DEVELOPPER LES EXERCICES SUIVANTS AVEC JAVA
EXERCICE 1: Soit le type structure enreg défini ainsi : const int NMOIS = 12 ; struct enreg { int stock ; float prix ; int ventes [NMOIS] } a) Écrire une fonction nommée raz qui « met à zéro » les champs stock et ventes d’une structure de ce type, transmise en argument. La fonction ne comportera pas de valeur de retour. b) Écrire un petit programme d’essai qui affecte tout d’abord des valeurs aux différents champs d’une telle structure, avant de leur appliquer la fonction raz. On affichera les valeurs de la structure, avant et après appel (on pourra s’aider d’une fonction d’affichage) EXERCICE 2 : Définition d’une classe dérivée, droits d’accès
On dispose de la classe suivante : class Point { public void initialise (int x, int y) { this.x = x ; this.y = y ; } public void deplace (int dx, int dy) { x += dx ; y += dy ; } public int getX() { return x ; } public int getY() { return y ; } private int x, y ; } a) Réaliser une classe PointA, dérivée de Point disposant d’une méthode affiche affichant (en fenêtre console) les coordonnées d’un point. Ecrire un petit programme utilisant les deux classes Point et PointA. b) Que se passerait-il si la classe Point ne disposait pas des méthodes getX et getY ? EXERCICE 3 : Définition d’une classe dérivée, droits d’accès On dispose de la classe suivante : class Point { public void setPoint (int x, int y) { this.x = x ; this.y = y ; } 2019-2020
Prof. S.KRIT
Page 1
public void deplace (int dx, int dy) { x += dx ; y += dy ; } public void affCoord () { System.out.println ("Coordonnees : " + x + " " + y) ; } private int x, y ; } Réaliser une classe PointNom, dérivée de Point permettant de manipuler des points définis par deux coordonnées (int) et un nom (caractère). On y prévoira les méthodes suivantes : • setPointNom pour définir les coordonnées et le nom d’un objet de type PointNom, • setNom pour définir seulement le nom d’un tel objet, • affCoordNom pour afficher les coordonnées et le nom d’un objet de type PointNom. Écrire un petit programme utilisant la classe PointNom. EXERCICE 4 : Héritage et appels de constructeurs On dispose de la classe suivante (disposant cette fois d’un constructeur) : class Point { public Point (int x, int y) { this.x = x ; this.y = y ; } public void affCoord() { System.out.println ("Coordonnees : " + x + " " + y) ; } private int x, y ; } Réaliser une classe PointNom, dérivée de Point permettant de manipuler des points définis par leurs coordonnées (entières) et un nom (caractère). On y prévoira les méthodes suivantes : • constructeur pour définir les coordonnées et le nom d’un objet de type PointNom, • affCoordNom pour afficher les coordonnées et le nom d’un objet de type PointNom. Écrire un petit programme utilisant la classe PointNom. EXERCICE 5: Redéfinition On dispose de la classe suivante : class Point { public Point (int x, int y) { this.x = x ; this.y = y ; } public void affiche() { System.out.println ("Coordonnees : " + x + " " + y) ; } private int x, y ; } Réaliser une classe PointNom, dérivée de Point permettant de manipuler des points définis par leurs coordonnées et un nom (caractère). On y prévoira les méthodes suivantes : • constructeur pour définir les coordonnées et le nom d’un objet de type PointNom, • affiche pour afficher les coordonnées et le nom d’un objet de type PointNom
2019-2020
Prof. S.KRIT
Page 2
SOLUTIONS EXERCICE 1 : Ici, pour que la fonction puisse modifier la valeur d’une structure reçue en argument, il est nécessaire qu’elle en reçoive, soit la référence, soit l’adresse. Voici un exemple complet utilisant la première possibilité : =======================================JAVA===================================== package serie3; import java.util.*; publicclass enreg { inti; intNMOIS=12; intstock; floatprix; intventes[]=newint[NMOIS]; void raz(enreg n) { n.stock=0; for(i=0;i