Série TD

Transcription

Série TD
Université de Jijel
Faculté des sciences exactes et Informatique
Département d’informatique
2 LMD Informatique
Module : S-3 : programmation orientée objet en -JavaResponsable de module : Rouibah Said
Cours + Séries + Solutions : http://cyberquebec.ca/rouibahsaid/
Série TD - N°01
Exercice 01
1- Considérant les déclarations des instructions Java suivantes :
byte b; short s; int i; long l; float g;
double d;
Quel est le type des expressions suivantes ?
b+s
s+5
b+2.0
i+6.0f
d+g
i/2
g/5.2f
i+l
b==s
i/(l+5)
2- Lesquelles des instructions Java suivantes déclarent et initialisent les variables correctement ?
bit a = 0;
long a1 = 0x10C;
byte a2 = 0x102;
int a3 = 0b12004 ;
int a4 = 0935A ;
double a5 = 10;
byte a6 = -0;
long a7 = 123456789;
3- Lesquelles des instructions Java suivantes, sont correctes et lesquelles sont fausses?
byte a = 5;
a = 13;
a = 129;
short b = a ;
a =b ;
int A = a;
float B = 5.2;
float BB = 4.3f;
double C = 6.3;
C = a;
char d = 'a';
char c = -10;
char f = '1';
char n = "z";
char t = '\uf00f';
int r = d+B;
int rr = d;
4- Quel est le résultat de code Java suivant ? (donner les valeurs des variables a,b et c à chaque
réévaluation ?
int a = 10;
long b = 20;
short c = 30;
System.out.println(++a + b++ * c);
System.out.println(a-- + --b * c++);
1
Exercice 02
1. Écrivez la méthode int add (int a, int b) qui retourne la somme des entiers a et b
2. Écrivez la méthode int min (int a, int b) qui retourne le minimum des entiers a et b
3. Écrivez la méthode int min3 (int a, int b ,int c) qui retourne le minimum des entiers
a , b et c ( + utiliser la méthode min définie en 2)
4. Écrivez la méthode int max (int a, int b) qui retourne le maximum des entiers a et b
5. Écrivez la méthode int max3 (int a, int b , int c) qui retourne le maximum des
entiers a , b et c (+ utiliser la méthode max définie en 3).
Exercice 03
I- Créer une classe Etudiant, qui contient :
1. Une constante entière nbrModule = 5
2. Un attribut nom de type String
3. Un tableau tabNote de réel de taille nbrModule.(à vous de choisir le type entre float et double !!!)
4. Une méthode void remplir() qui permet de charger les notes de l’étudiant dans tabNote
5. Une méthode float somme() qui retourne la somme des notes de l’étudiant.
6. Une méthode float moyenne() qui retourne la moyenne de l’étudiant.
7. Une méthode boolean isAdmis() qui permet de vérifier si l’étudiant est admis.
8. Une méthode void remplir(int i, float x) qui permet de charger la ieme case de
tabNote par x
9. Une méthode void afficherN() qui permet d’afficher les notes de l’étudiant en ligne par
Exemple : 10 9.5 18 13 3.75
10. Une méthode void afficherR() qui affiche le relevé de notes de l’étudiant (un exemple ) :
-----------------Module
Note
-----------------1
10
2
9.5
3
18
4
13
5
3.75
----------------Moyenne
10.85
2
11. Une méthode main qui a le code suivant :
public static void main(String[] args) {
remplir();
float som = somme();
float moy = moyenne();
boolean adm = isAdmis();
afficherN();
System.out.println("La moyenne est :"+moy);
System.out.println("L’étudiant est admis ?:"+adm);
afficherR();
}
Le programme ci-dessus s’exécute correctement ? Si oui donner le résultat sinon le corriger et donner
le résultat.
12. Annuler toutes les modifications effectuées dans la question 11 :
Que donne l’exécution du programme suivant.
class Execute {
public static void main(String[] args) {
Etudiant
etud1= new Etudiant( );
Etudiant
etud2= new Etudiant( );
etud1.nom ="Mohammed";
etud2.nom ="Youcef";
etud1.remplir ( ) ; // Entrer = {10 , 13 , 6.5 , 18, 5 }
etud2.remplir(); //Entrer = {1 , 13 , 6.5 , 2, 5 }
etud1.afficherR();
etud2.afficherR();
}}
3
13.
Ajouter un constructeur à la classe Etudiant qui permet d’initialiser le nom
14.
Que donne l’exécution du programme suivant.
class Execute {
static
Etudiant [] liste = new Etudiant[3]
public static void main(String[] args) {
liste[0]= new Etudiant("Mohammed");
liste[1]= new Etudiant("Youcef");
liste[2]= new Etudiant("Halima");
liste[0].remplir();
// entrer : 7
liste[1].remplir();
3.5
// entrer : 6
04 02 10
13.5
14 02 10
for (int j=0 ; j< liste[2].tabNote.length ; j++)
liste[2].remplir(j,j*3+1);
for (Etudiant e :liste){
System.out.println("Relevé de notes de l’étudiant: "+e.nom);
e.afficherR() ;
}
}}
4
Exercice 04
Donner les résultats du programme Java suivant (présenter les changements des états des objets à chaque
étape d’exécution)
class Compte {
double solde ;
String numCompte ;
static int nbr = 0 ;
Compte (String num, double solde) {
=
;
ℎ .
=
++;
}
class Execute {
Compte (String num ) {
ℎ (
, 0) ;
}
B.retrait ( ) ;
Compte ( ) {
ℎ ("
}
public static void main(String[] args) {
Compte A = new Compte ("A0001",2000);
Compte B = new Compte ("B0002");
Compte C = new Compte ( );
A.depot (1200) ;
A.transferer(B,1000) ;
System.out.println (B);
System.out.println (C);
Compte D = B ;
") ;
D.depot (2000) ;
System.out.println (B);
void depot (double solde){
ℎ .
}
+=
;
System.out.println (D);
B.depot (900) ;
void retrait (double solde){
ℎ .
}
−=
System.out.println (B);
;
System.out.println (D);
void retrait ( ){
B.transferer (D) ;
−= 1000;
}
System.out.println (B);
System.out.println (D);
void transferer(Compte c , double mantant){
}
.
−=
+=
;
System.out.println ("nbre = " +Compte.nbr) ;
;
} // fin main
}//fin classe
void transferer(Compte c){
}
.
−= 1000 ;
+= 1000 ;
public String toString() {
return " Compte : "+ numCompte+" : "+solde ;
}}
5
Exercice 05
1- Créer une classe Point, qui contient :
-
Une abscisse x et une ordonnée y (de type double).
-
Un constructeur sans paramètres qui initialise x et y à 0.0
-
Un constructeur recevant en paramètres tous les attributs de la classe.
-
Une méthode distance qui calcule la distance de point au point O (0,0)
-
Une méthode deplacer (…) qui permet de déplacer le point vers une nouvelle position.
-
Une méthode toString qui permet de décrire les objets Point en une chaîne de caractères
2- Créer une classe Cercle, qui contient :
-
Un point p représentant le centre du Cercle.
-
Un attribut rayon de type double.
-
Un constructeur a trois paramètres, les deux premiers définissent l’abscisse et l’ordonnée
p
du point centre et le troisième définit le rayon.
-
Un constructeur qui reçoit en paramètre un point et un paramètre de type double.
-
Une méthode surface () qui permet de calculer la surface de disque
- Une méthode toString qui permet de décrire les objets Cercle en une chaîne de caractères
3- Créer une classe Rectangle, qui contient : (on suppose que les côtés des rectangles sont
parallèles aux axes)
- Une dimension horizontale(longX de type double).
-
Une dimension verticale (longY de type double).
- Un point représentant l’intersection des diagonales de rectangle.
- Un constructeur prenant en paramètre un point et deux longueurs positifs.
-
Une méthode surface () qui permet de calculer la surface de rectangle
- Une méthode toString qui permet de décrire les objets Rectangles en une chaîne de
caractères
longX
longY
p
6
4- Un objet de la classe Visage est représenté comme suite :
- Définir les attributs de la classe Visage.
- En plus des attributs définis dans la question précédente, la classe Visage contient un
attribut nbr initialisé à 0 (nbr compte le nombre de visage crées)
- Ecrire un constructeur pour la classe Visage a comme paramètre un point p :
Visage (Point p) {...} // p : point centre de visage
-
Écrire une méthode surface pour la classe Visage. La surface d'un Visage est la somme
des surfaces de ses cercles et de ses rectangles même si ceux-ci se superposent.
-
Ecrire une méthode jumelle (….) qui permet de recopier un objet de type visage dans un
autre objet de type visage.
-
Ecrire la méthode toString qui permet d’afficher le point centre de visage.
5- Définir une classe Population, Chaque objet de cette classe contient un tableau d’objet de type
Visage dont la taille est fixée à la construction de l'objet. Au départ, une population ne contient
aucun visage.
-
Écrire une méthode add qui permet d'ajouter un visage à une Population.
-
Écrire une méthode supp qui permet de supprimer un visage d’une Population.
-
Écrire une méthode Surface pour la classe Population. La surface d'une Population est la
somme des surfaces de ses visages même si ceux-ci se superposent.
-
Ecrire la méthode toString qui permet d’afficher le nombre de visage et la surface de la
population.
7
6- Donner le résultat de code suivant
public class Execute
{
public static void main(String[] args)
{
Point p1 = new Point ();
Point p2 = new Point (2,2);
Cercle c1 = new Cercle (p1,1);
Cercle c2 = new Cercle (2,2,2);
Rectangle r1 = new Rectangle(p1,1,1);
Rectangle r2 = new Rectangle(p2,2,2);
Visage [] w = new Visage [2];
w[0] = new Visage(p1);
w[1] = new Visage(p2);
Population p = new Population(2);
p.add(w[0]);
p.add(w[1]);
System.out.println("je suis le point p1:"+p1);
System.out.println("Je suis le cercle c2 :"+c2);
System.out.println("je suit le le visage w[0]: "+w[0]);
System.out.println("je suis la population p "+p);
}
}
8

Documents pareils