Vous êtes sur la page 1sur 10

Université Chouaib Doukkali Filière SMI / Semestre 6

Faculté des Sciences El Jadida Programmation Orientée Objet — JAVA


Département d'Informatique Année Universitaire 2020-2021

Examen

Quel est le résultat I'exécution du programme suivant :


public class A publ ic public class B extends
String nom; public static int
public static int
public A(String
public B(String
nom) this. nom— nom) { super
n0m; (nom) ;

public static Void f public static void


() f()

public class Test { public static Void


main(string args)
A objeta-new
B objetb=new BC Souad*);
Exercice2 :
I. Créez une classe CompteBaneaire qui doit posséder • les attributs

privés numCompte de type int et solde de type double ;

— un constructeur pour initialiser les différents attributs ; la méthode


déposer (double s) : pour ajouter une somme au solde ;
— la méthode retirer (double s) : pour retirer une somme du solde ; la méthode info()
qui retourne les informations concernant le compte, comme suit :
« Compte numéro : 325, Solde : 20500 Dhs
2. Créez une classe Personne qui contient :
— les attributs privés : nom, prénom de type String et age de type int ;
— un constructeur pour initialiser les différents attributs ;
— une méthode afficher qui amche le nom, le prénom et l'age.

3. Créez une classe Client qui hérite de la classe Personne :


— on que chaque client dispose d'un seul compte ; redéfinissez la méthode afficher pour

qu'elle affiche aussi les informations concernant le compte.

Indication : ajoutez à la classe Client un attribut de type CompteBaneaire qui sera initialisé
dans un constructeur.

4. Ecrivez une classe Banque qui contient une méthode main O.


Dans la méthode main () :
a - déclarez un tableau de 4 clients qui auront les caractéristiques suivantes :
Pour le numéro de compte, le premier client aura le numéro 1000 et pour chaque nouveau
client il faut ajouter I au numéro du client précédent.

b - Affichez les informations concernant les différents clients.


//En utilisant la boucle dite for... each c -
Le client I dépose 2000 d - La cliente 4
retire 1500 Dh.

Filière SMI / Semestre 5


Université Chouan' Doukkali
Faculté des Sciences El Jadida
Département

Programmation Orientée Objet avec


JAVA d'Informatique Année Universitaire 2020-2021 Examen de rattrapage

Exercicel :
Analyser le programme ci-dessous et donner le résultat qui sera produit ?

public class Compteur public class


TestCompteur
private int max; private int val;
public static
public Compteur (intVoid max)
this.max—rnxx; public int val OCompteur
System.out.println(c);
return val; public String toString()
return String.valueOÂval); public
Void inc()
val++;
if(val>max) for (int

c.inc();
out.println(c)•,

public Void dec()


for (int
val—•,
c.dec();
System.0ut.println(c);

On se donne la liste des classes suivantes : Etudiant, Personne, EtudiantTravailleur,


Enseignant et EtudiantSportif.
Exercice 2
1. Dessinez une arborescence cohérente pour ces classes
2. Où se situeront les champs suivants : âge, salaire, adresse, anneDEtude, nom et
sportPratique.
3. Définissez les classes suivantes : Etudiant, Personne, EtudiantTravailleur, Enseignant
et EtudiantSportif.
a) Le constructeur qui prend autant d'arguments qu'il y a de variables d'instance et
qui se limite à initialiser ces dernières avec les valeurs des arguments ;
b) Si vous avez déclaré private les variables d'instance (c'est conseillé, sauf
indication contraire) définissez également des « accesseurs » permettant de
consulter les valeurs de ces variables.
c) Une méthode public String toString() produisant une description sous forme de
chaine de caractères des Objets ;
4. Écrivez une classe Test qui contient une méthode main ().
Dans la méthode main O :
a) Déclarer et remplir un tableau tab par 2 Objets Personne, 2 Objets Etudiant, 3 Objets
Enseignants, un Objet EtudiantSportif;
b) Affichez les informations concernant les différentes personnes ;
c) Afficher la liste des Enseignants ;
En utilisant la boucle dite for.… each
d) Afficher les informations concernant la personne se trouvant à la position 3;

Exercice3:
Écrivez une classe Matrice Triangulaire qui contient une méthode main O.
Dans la méthode main O initialisez la matrice triangulaire supérieure suivante :

Il ne faut pas initialiser la partie inférieure.


Filière : LP BD Année Universitaire 2020-2021 d'informatique

Examen
Programmation Orientée objet : Java
(Durée : 11145min)
Université Chouan' Doukkali
Faculté des Sciences El Jadida
Département
Analyser le programme ci-dessous et donner le résultat qui sera produit ?
public class Compteur private int public class •rcstComptcur public
max; private int val; static Void main(Stringll args)
public Comptcuront max)
t this.max=max; Systctuout.println(c); //ql
System.out.
public int valo for(int
return val', c.inc();
System.out.println(c); //q2
public String to.String() t
return String.

public Void inco System.Out.


for(int
c.dec0;
System.out.println(c); //q3

public void
'ICCO t val
—;

val=max-l;

I. Créez une classe CompteBancaire qui doit posséder :


• les attributs privés numCompte de type int et solde de type double ; un
constructeur pour initialiser les différents attributs ;
• la méthode déposer (double s) : pour ajouter une somme au solde ;

la méthode retirer (double s) : pour retirer une somme du solde ; la méthode
infoo qui retourne les informations concernant le compte, comme suit :
« Compte numéro : 325, Solde 20510 Dhs
2. unc classe Personne qui contient :
• — les attributs privés nom. prénom de type String et age de type int ;
• — un Constructeur pour initialiser ICS différents attributs ;
• — unc méthode afficher 0 qui a ffiche Ic nom, Ic prénom ct l'age.
3. Créez une classe Client qui hérite de la classe Personne •
Filière LP BD
— on suppose que chaque client d'un seul compte ; redéfinissez la méthode :
afficher pour affiche aussi les informations concernant le compte.
Indication : aioutcz à la classe Client un attribut de type CompteBancaire qui sera initialisé
dans un constructeur.
4. Écrivez une classe Banque qui contient une méth(kle main 0. Dans la méthode
main 0 :
a - déclarez un tableau de 4 clients qui auront les caractéristiques suivantes :
Pour le numéro de compte, le premier client aura le numéro 1000 et pour chaque
nouveau client il faut ajouter I au numéro du client précédent.
Affichez les informations concernant les différents
clients. / /En utilisant la boucle ditefor... each c - Le client I dépose Dh. d - La
cliente 4 retire Dh.
Année Universitaire 2017-2018
d'Informatique

Examen
Programmation Orientée objet : Java
(Durée : 1H30min)

Exercice I
Fxrire un proZramme qui tire au hasard un nombre entier compris entre I et 10. Ce nombre
(secret) pas affiché. Puis le programme demande à l'utilisateur d'entrer un nombre entier au hasard
entre I ct 10. Si le nombre de l'utilisateur est différent au nombre secret, Ic programme lui indique
avec un message, et en lui demandant d'entrer un nouveau nombre. Inrsque l'utilisateur trouve la
solution, le programme lui dit qu'il a gagné et en lui indiquant le nombre qu'il lui fallu pour trouver
le nombre.

Math.random() est la fonction qui génère un nombre aléatoire compris entre 10,11. Si on veut
générer un nombre cnticr aléatoire entre on utilise +a)
• Le code pour lire un entier à partir du clavier :
import iava.util.• ; //Il faut insérer cette ligne juste avant votre classe
Scanner SC=r1CAV ; // Déclarer un Objet Scanner int
/'lit un entier à partir du clavie
Exercice 2
Soit le diagramme de classes UML suivant
Université Chouan' Doukkali
Faculté des Sciences El Jadida
Département

• Créer les classes "Personne.iava" et "Salarie.iava", sachant que la prime est calculée la de
la formule suivante : prime = (5'salairc'nbEnfants)/IOO Ecrirc un programme "Tcst.iava" pour
tcstcr vos classes

Exercice 3
On souhaite disposer d'une hiérarchie de classes permettant de manipuler des figures géométriques.
On veut qu'il soit touiours possible d'étendre la hiérarchie en dérivant de nouvelles classes mais On
souhaite pouvoir imposer que ccs dernières disposent toujours des méthodes

• void affichc 0
• Void homothctic (double cocff)
• Void rotation (double angle)
Ecrire la classe abstraite Figure qui pourra servir de classe de base à toutes ces classes.
2. Compléter la classe abstraite de façon qu'elle implémente :
• une méthode homoRot (double coef, double angle) qui applique à la fois unc homothétie ct une
rotation à la figure.

• de méthodC"; statiques affichel•Ggures. homothetielügures et rotationFigures appliquant une


même opération (affichage, homothétie ou rotation) un tableau de figures (Oblets d'une classe
dérivée de Figure).
Faculté des Sciences, El Jadida Année Universitaire 2017-2018
Département d'Informatique
Examen
Programmation Orientée objet : Java
(Durée : 1H30min)

Exercice I
Le
code est
import
iava_
Scanner, class Devine
{ public static Void main( String args Il)
double l",
int
/ ("secret "*secret), int nbreessai=O, essai;
do nbreessai++;
System.out.println ("Entrez un essai Scanner = new
Scanncr(Systcm.in); essaie sc.nextlnt(); if (essai < secret)
System.out.println ("Désolé entrez un entier plus grand

if(cssai > secret)


System.out.println ("Désolé entrez un entier plus petit");

if(essai secret)
System.out.println ("Bravo, vous avez gagné");
Systctn.out.println ("VOLLS avez essayé + nbrccssai + fois");
break;

}while(true);

Exercice 2
//Le code de la classe personne
public class Personne t
protected int nbF.nfants;
'tected String nom; public Personnc(int
nbEnfants,String nom) t this_nbEnfants
—nbEnfants; nom=nom;
//le
code
de la
classe

Salaire derivee de la classe Personne public class Salarie


extcnds Pcrsonnc private tloat salairc; salaire)

le nombre nbEnfan public tloat getSahireO return salaire;


public float getPrimc0 return (5'salairenbEnfants)/ 100;

//Le programme principale public


class Test
{ public Static void main(Stringll am;)
Personne p = new
Salarie s new
Salarie SI new
System.out.println(s.getlnf0); salatre: "4 s.gctSalaire0); prime:
"+s.gctPrimc0); prime de +sl +
sI .getprimc());

Exercice 3
Appliquer les règles de définition d'une classe abstraite. On y place les en-têtes des méthodes qu'on
souhaite voir redéfinies dans les clxsses dérivées, cn leur associant Ic mot clé abstract.
abstract class Figure abstract public Void afficheC) ;
abstract public Void homothetie (double coef) ;
abstract public void rotation (double angle) ;

mot clé abstract figurant devant class peut être omis (toute classe disposant au moins d'une
méthode abstraite est abstraite). Il est cependant conseillé de le conserver. Quant aux noms
d'arguments accompagnant les cn-têtcs de méthodes, ils sont syntaxiquement nécessaires.
Classes la hiérarchie de figures Seront alors simplement définies Comme Classes de
Figure et elles devront définir les trois méthodes affiche, homothétie et rotation, par exemple :
class Point extcnds IGgurc t public void affichc()
public Void homothetie (double coet)
public Void rotation (double angle)
l. Une classe abstraite peut comporter des définitions de méthodes (non abstraites) qui
pourront alors être utilisées par les classes dérivées sans qu'il soit nécessaire de les
redéfinir (mais on peut toujours le faire 5. D'autre part, une classe abstraite comporter
des méthodes statiques, pour peu que celles-ci ne soient pas abstraites (cc qui n'aurait
signification).
En définitive, voici la dcfinition de notre nouvelle clxsse Figure •
abstract class Figure abstract public void affiche() ;
abstract public Void homothetie (double coef) ;
abstract public Void rotation (double angle) ; public
void I lomoRot (double cocf, double angle)
thetie (coet) ; rotation (angle) ;
public static Void afficheFtgures (ligure [l t) for ont ; i<f.length ; i+4)
tlil.afficheO ; public static vod (double coef, l%gurcll i) for
(int i<f.lcngth ; i4+) ilil.homothctic(coef) ; public static Void
rotationEigures (double angle, l•igurell i) for (int ; i<f.length ;
i++) ilil.rotarion(angle) ;

On notera que, au sein de la méthode homoRot, il est possible d'appeler les méthodes
homothétie et rotation, et ceci bien qu'elles soient abstraites. En effet, d'après les du
rv.lymorphisme. méthode effectivement appelée sera celle correspondant au type effectif de
l'obiet ayant appelé la méthode homoRot; grâce aux contraintes portant sur les dérivées de
classes abstraittes, on est certain qu'elle existera.
Des réflexions analogues s'appliquent à l'appel des méthodes homothetie et rotation dans les
méthodes statiques homothetieFigures et rotationFtgures.

Vous aimerez peut-être aussi