• Aucun résultat trouvé

Examen de Programmation Java

N/A
N/A
Protected

Academic year: 2022

Partager "Examen de Programmation Java"

Copied!
2
0
0

Texte intégral

(1)

Université de Nice-Sophia Antipolis POLYTECH

PEIP2 2016–2017

Examen de Programmation Java

Durée : 1h00 Aucun document autorisé

Mobiles interdits Nom : Prénom :

I1. En Java, qu’est-ce qu’une classe ? Quel est son rôle ?

Question sur 2 pts : Le rôle d’une classe est de décrire les propriétés des objets qui seront créés lors de l’exécution du programme. En Java, une classe définit un type. La classe contient à la fois des données (accessibles par des variables membres) et des méthodes qui s’appliquent à l’objet courant.

. . . .

I2. Dans la méthodologie objet, expliquez le rôle des méthodes, en distinguant celui des fonctions ET des procédures,

Question sur 2 pts : Dans la méthodologie objet, le rôle des fonctions est de renvoyer une description partielle ou totale de l’objet courant, et celui des procédures de modifier l’objet courant.

. . . .

I3. Expliquez le rôle du mot-cléstaticdevant une méthode, et en quoi cela remet en cause le modèle de programmation objet.

Question sur 2 pts : Le mot-cléstaticplacé devant une méthode permet d’exé- cuter cette méthode sans avoir à créer d’objet au préalable. Puisque dans la méthodologie objet, à l’exécution, un programme est un ensemble d’objets en interaction, avec le mot-clé static un programme pourrait exécuter des mé- thodes sans objet, ce qui remet en cause le modèle objet.

. . . .

I4. On veut décrire les nombres rationnels par la classeRationnel. On rappelle qu’en mathématiques, un nombre rationnel est un nombre qui peut s’exprimer comme le quotient de deux entiers relatifs,a(le numérateur) etb(le dénomi- nateur) notéab, avecb6= 0. Écrivez la classeRationnelavec 2 variables privées numérateuretdénominateur, un constructeur pour initialiser le numérateur et

1

le dénominateur, et la méthodetoStringpour avoir une représentation d’un Rationnelsous la formea/b(e.g.1/3ou17/−7).

Question sur 4 pts : /* *

* La classe Rationnel décrit les nombres mathématiques rationnels .

* Un nombre rationnel est un nombre qui peut s ’ exprimer comme le

* quotient de deux entiers relatifs , a ( le numérateur ) et b ( le

* dénominateur ) noté a/b avec b !=0.

*/

p u b l i c c l a s s Rationnel { p r i v a t e i n t numérateur ; p r i v a t e i n t dénominateur ; /* *

* Antécédent : b !=0

p u b l i c*/ Rationnel (i n t a , i n t b) { assert b !=0;

t h i s. numérateur =a;

t h i s. dénominateur =b;

} /* *

* Rôle : renvoie la conversion de l ’ objet courant this

* sous forme d ’une chaîne de caractères

*/

p u b l i c String toString () {

r e t u r n t h i s. numérateur +"/"+t h i s. dénominateur ; }

}

. . . .

I 5. Tout nombre rationnel (non nul) possède une forme unique dite irréductible lorsque le numérateur et le dénominateur (>0) n’ont pas de diviseurs communs autre que 1. Écrivez et ajoutez à la classeRationnella procédure publique irréductiblequi rend l’objetRationnelcourant irréductible. Pour cela vous penserez à écrire et à utiliser la méthode privéepgcdqui calcule le plus grand commun diviseur de deux entiers.

Question sur 5 pts :

/* * Antécédent : a >0 et b >0

* Conséquent : renvoie le pgcd de a et b

*/

p u b l i c s t a t i c i n t pgcd (i n t a , i n t b) { w h i l e (a != b)

//pgcd(a,b) = pgcd(a-b,b) et a>b //= pgcd(a,b-a) et a<b

i f (a >b)

2

(2)

//pgcd(a,b) = pgcd(a-b,b) et a>b a -= b;

e l s e

//pgcd(a,b) = pgcd(a,b-a) et a<b b -= a;

r e t u r n a;

} /* *

* Antécédent : this !=0

* Rôle : rend l ’ objet courant this irréductible

*/

p u b l i c v oi d irréductible () { assert t h i s. numérateur !=0;

i n t pégécédé = pgcd ( Math . abs (t h i s. numérateur ), Math . abs (t h i s. dénominateur ));

i f ( pégécédé != 1) {

t h i s. numérateur /= pégécédé ; t h i s. dénominateur /= pégécédé ; }

//rendre le dénominateur positif i f (t h i s. dénominateur <0) {

t h i s. numérateur = -t h i s. numérateur ; t h i s. dénominateur = -t h i s. dénominateur ; }

}

. . . .

I6. Pour une classe de test, écrivez la méthodemainqui crée un nombre rationnel avec son numérateur et son dénominateur tirés au hasard (Random) ; qui l’écrit sur la sortie standard ; puis qui écrit sa forme irréductible toujours sur la sortie standard.

Question sur 2 pts :

p u b l i c s t a t i c vo id main ( String [] args ) { java . util . Random r = new java . util . Random ();

Rationnel n = new Rationnel (r. nextInt () , r. nextInt ());

System . out . println ("n=" + n );

n. irréductible ();

System . out . println (n );

}

. . . .

I7. La classeTabledu TD5 contient une variable privéevaleursde type tableau dedouble. Rappelez la déclaration de cette variable membre.

Question sur 1 pt :

3

p r i v a t e double [] valeurs ;

. . . .

I 8. Écrivez et ajoutez à cette classe la méthode publique booléennerechercher qui recherche une valeur réellexpassée en paramètre, qui renvoietruesi la valeurxest présente dans le tableauvaleursetfalsesinon.

Question sur 3 pts : /* *

* Rôle : renvoie true si la valeur x est présente

* dans la table et false sinon .

*/

p u b l i c b o o l e a n rechercher (double x) { f o r (double v : valeurs )

i f (x == v) r e t u r n t r u e; //x6∈valeurs

r e t u r n f a l s e; }

. . . .

4

Références

Documents relatifs

Type 2 : Erreurs d’exécution : Après que la compilation soit faite sans erreur, il peut se trouver que le travail fait par le programme soit erroné, par exemple : division par

Cette implémentation s'est en fait contenté, avec super.clone(); , de faire appel à la méthode clone() héritée de Object , qui crée un objet de la même classe que l'original

5) Rajouter à la classe Cinema une méthode prefere () qui affiche simplement le mot &#34; Western &#34;.. 7) Définir une classe Restaurant qui implémente aussi cette interface et

• Dans une classe, en dehors de de la définition de toute méthode (et bloc), un identificateur peut être déclaré partout... Portée d'un identificateur à l'intérieur

• Si un programme Java veut utiliser une méthode dans la libraie Java, le programme Java doit en premier importer la classe qui le contient. import

 Les Méthodes sont déclarés dans le corps de la classe mais immédiatement après la déclaration des champs (attributs) de données..  La forme générale d'une déclaration de

• Membres (variables et méthodes) déclarés avec une visibilité privée ne peuvent être référencées par leur nom dans une classe fils. • Ils peuvent être

• Si la classe Rect est derivée de la classe Shape, une operation qui peut être exécutée sur un objet de la classe Shape peut aussi être exécutée sur un objet de la classe