Vous êtes sur la page 1sur 8

Institut Supérieur de Gestion 1èreIAG Cahier de TD en Langage « JAVA »

Série d’exercices N°2

Exercice 1:

A/
On considère la classe Etudiant définie par :
- les attributs privés suivants : nom, prénom, nombre de notes et un tableau de notes
- les méthodes suivantes : Saisie, Affichage, Moyenne, Admis, Exae_quo (Moyenne
retourne la moyenne des notes, Admis et Exae_quo retournent un résultat booléen,
sachant que Exae_quo compare la moyenne avec celle d’un autre étudiant)
Définir la classe Etudiant en java.

B/
On considère la classe EtudiantMaitrise qui représente les étudiants en maîtrise
- un étudiant de ce type possède un attribut supplémentaire par rapport aux autres
étudiants: note de mémoire.
- Les méthodes associées à cette classe sont : Saisie, Affichage, Moyenne, Admis,
Exae_quo
Définir la classe EtudiantMaitrise en java.

C/
On considère la classe TableEtudiants représentant un tableau d’étudiants pouvant contenir
différents types d’étudiants (en maîtrise ou non). Les méthodes implémentées par cette classe
sont : Ajout d’un étudiant donné en paramètre, Suppression d’un étudiant dont le rang est
donné en paramètre, Nombre d’étudiants admis, Affichage de tous les étudiants du tableau.
Définir la classe TableEtudiants en java.

D/
Ecrivez un programme java permettant de créer un tableau d’étudiants et permettant, à l’aide
d’un menu de donner la possibilité à l’utilisateur de :
- ajouter un étudiant dans le tableau
- supprimer un étudiant
- calculer le nombre d’étudiants admis
- afficher la totalité des étudiants

Exercice 2:

I- On veut définir la classe des disques, un disque étant défini par son centre, qui est un
Point, et par son rayon, que l'on représentera par un double. Le fait qu'un disque soit
construit à partir d'un point (instance d'une classe existant déjà) s'appelle de la composition.
1) Définir la classe Disque avec ses champs centre et rayon.
2) Définir un constructeur acceptant en argument un Point et un double pour initialiser le
disque créé.
3) Définir un constructeur sans argument initialisant le centre du disque au point par défaut
(celui construit par le constructeur de point sans argument) et le rayon à 1.
4) Définir une méthode retournant la surface d'un disque.

Prof : Hafedh El Ayech Page 12


Institut Supérieur de Gestion 1èreIAG Cahier de TD en Langage « JAVA »

5) Définir une méthode testant l'égalité de deux Disques.


II- On considère qu'un anneau est un disque plus la donnée d'un rayon interne.
1) Écrire une classe Anneau qui hérite de la classe Disque.
class Anneau extends Disque
{
private double rayonInterne;

2) Créer dans la classe Disque une méthode diametre() et dans la classe Anneau une
méthode diametreInterne().
3) Peut-on disposer d'un constructeur par défaut dans la classe Anneau s'il n'y a pas de
constructeur sans argument dans Disque? Pourquoi?
Résoudre le problème en faisant en sorte qu'un appel à new Anneau() construise un anneau
ayant les caractéristiques d'un disque par défaut et de rayon interne nul.
4) Définir un champ couleur de type String dans la classe Disque. Redéfinir (masquer) ce
champ par un champ couleur de type int dans la classe Anneau. Tester en différents points
du code quel est le champ couleur qui est visible (String ou int). Comment faire, à partir
d'une instance de la classe Anneau, pour récupérer la valeur du champ couleur de type
String.
5) Que pensez vous de la méthode méthode surface() accessible par héritage sur les
instances de la classe Anneau? Redéfinir-la pour qu'elle retourne une valeur correcte pour un
anneau. Comment faire alors, à partir d'une instance de la classe Anneau, pour accéder à la
méthode surface() de la classe Disque?

Prof : Hafedh El Ayech Page


13
Institut Supérieur de Gestion 1èreIAG Cahier de TD en Langage « JAVA »

Correction
Série d’exercices N°2

Exercice 1 :

import java.util.*;

public class Etudiant


{

public String nom,prenom;


public int nbnotes;
public float notes[];

public void saisie()


{
int i;
System.out.println("donnez le nom de l'etdiant
");nom=Readln.unstring();
System.out.println("donnez le prenom de l'etdiant
");prenom=Readln.unstring();
do {
System.out.println("donnez le nombre de note
");nbnotes=Readln.unint();
}
while(nbnotes<=0);

notes=new float [nbnotes];


for(i=0;i<nbnotes;i++)
do
{
int j=i+1;
System.out.println("donnez la note numero
"+j);notes[i]=Readln.unfloat();
}
while(notes[i]<0||notes[i]>20);

public float Moyenne()


{
int i;
float Moy=0.0f;
for(i=0;i<nbnotes;i++)
Moy=Moy+(notes[i]/nbnotes);
return Moy;
}

public boolean Admis()


{return(Moyenne()>=10);}

public boolean Execaux (Etudiant e)


{
return(this.Moyenne()==e.Moyenne());
}

Prof : Hafedh El Ayech Page 14


Institut Supérieur de Gestion 1èreIAG Cahier de TD en Langage « JAVA »

public void affichage()


{
System.out.println(nom+"\t"+prenom);
for(int i=0;i<nbnotes;i++)
System.out.println(notes[i]);
System.out.println("la moyenne est "+this.Moyenne());
if(this.Admis())System.out.println("admis<e> ");
else System.out.println("Redouble");
}

public void intialiseraleatoirement()


{String Tnom[]=new String [4];
Tnom [0]="baffoun";Tnom [1]="chabbar";
Tnom [2]="benhassen";Tnom[3]="hizaoui";
String Tprenom[]=new String[4];
Tprenom[0]="medali";Tprenom[1]="kacem";
Tprenom[2]="wajdi";Tprenom[3]="marouene";
Random R=new Random();
int indice=Math.abs(R.nextInt()%4);
nom=Tnom[indice];indice=Math.abs(R.nextInt()%4);
prenom=Tprenom[indice];nbnotes=Math.abs(R.nextInt()%14)+1;
notes=new float[nbnotes];
for(int i=0;i<nbnotes;i++)
notes[i]=(float)Math.abs(R.nextInt()%21);}
}
import java.util.*;
public class EtudiantMaitrise extends Etudiant
{
private float notememoire;
public void saisie()
{
super.saisie();
do{ System.out.println("donnez la note de
memoire");notememoire=Readln.unfloat();
}while(this.notememoire>20||notememoire<0);

public void affichage()


{
super.affichage();
System.out.println("la note de memoire est "+notememoire);
}

public float Moyenne()


{
return((super.Moyenne()+notememoire)/2);
}
public void sesoutenir()
{
System.out.println("mémoire soutenu");
}
public void intialiseraleatoirement()
{Random R=new Random();
super.intialiseraleatoirement();

notememoire=(float)Math.abs(R.nextInt()%21);

Prof : Hafedh El Ayech Page 15


Institut Supérieur de Gestion 1èreIAG Cahier de TD en Langage « JAVA »

public class TableEtudiants


{
private Etudiant t[];
private int taillemax,nbactuel;
public TableEtudiants(int x)
{
taillemax=x;
t=new Etudiant[taillemax];
nbactuel=0;
}

public void Ajout(Etudiant E)


{
if(nbactuel<taillemax)
{
t[nbactuel]=E;
nbactuel++;
}
else System.out.println("table saturé");
}

public void suppression (int rang)


{int i;
if(rang>=0&&rang<this.nbactuel)
{
for(i=rang;i<nbactuel-1;i++)
t[i]=t[i+1];
nbactuel--;
}
else System.out.println("erreur ");
}

public int nbAdmis()


{int cpt=0,i;
for(i=0;i<nbactuel;i++)
if(t[i].Admis())
cpt++;
return cpt;
}

public void affichage()


{
for(int i=0;i<nbactuel;i++)
t[i].affichage();
}

public void affichermaitrisrds()


{
int i;
for(i=0;i<nbactuel;i++)
{
if(t[i] instanceof EtudiantMaitrise)
{
t[i].affichage();
((EtudiantMaitrise) t[i]).sesoutenir();
}
}
}
public void affichersimple()
{
int i;

Prof : Hafedh El Ayech Page 16


Institut Supérieur de Gestion 1èreIAG Cahier de TD en Langage « JAVA »

for(i=0;i<nbactuel;i++)
{
if (!(t[i] instanceof EtudiantMaitrise))

t[i].affichage();

}
}
}

public class Class1


{

public static void main (String[] args)


{
TableEtudiants TabE;
int n;
int choix;
do
{
System.out.println("donnez le nbre d'etudiants maximal");
n=Readln.unint();
}
while(n<=0);
TabE=new TableEtudiants(n);
do
{
System.out.println("1.ajouter en etudiant");
System.out.println("2.supprimer un etudiant");
System.out.println("3.calculer le nbre d'etudiants
admis");
System.out.println("4.afficher la totalite des
etudiants");
System.out.println("5.affichez les etudiants en
maitrise");
System.out.println("6.affichez les etudiant simple");
System.out.println("7.quitter");
System.out.println("donnez votre choix");
choix=Readln.unint();
switch(choix)
{
case 1:Etudiant e; char type;
do
{
System.out.println("tapez e pour etudiant
ou m pour etudiant maitrise");
type=Readln.unchar();
}
while(type!='e'&&type!='m');
switch(type)
{
case 'e':e=new Etudiant();
break;
case 'm': e=new EtudiantMaitrise();
break;
default: e=new Etudiant();
}
e.intialiseraleatoirement();
/*ou bien e.saisie();*/
TabE.Ajout(e);

Prof : Hafedh El Ayech Page 17


Institut Supérieur de Gestion 1èreIAG Cahier de TD en Langage « JAVA »

break;
case 2:int indice;
System.out.println("donnez l'indice de
l'etudiant a supprimer");
indice=Readln.unint();
TabE.suppression(indice);
break;
case 3:System.out.println("le nbre d'etudiants admis
est:" +TabE.nbAdmis());
break;
case 4:TabE.affichage();
break;
case 5:TabE.affichermaitrisrds();
break;
case 6 : TabE.affichersimple();
break;
case 7:System.out.println("au revoir");
break;
default:System.out.println("choix invalide");
}
}
while(choix!=7);
char x=Readln.unchar();
}
}

Exercice 2 :
package javaapplication8;
public class Point {
private int x,y;
}
package javaapplication8;

public class Disque {


private Point centre;
private double rayon;
String couleur;
public Disque(Point c,double r)
{centre=c;r=rayon;
couleur ="jaune";
}

public Disque() {centre=new Point();rayon=1;couleur="jaune";


}
public double surface()
{
return Math.PI * Math.pow(rayon,2.0);
}
public boolean égalité(Disque D)
{return (surface()==D.surface());
}
public double diamètre()
{
return rayon*2;
}
}
package javaapplication8;

Prof : Hafedh El Ayech Page 18


Institut Supérieur de Gestion 1èreIAG Cahier de TD en Langage « JAVA »

public class Anneau extends Disque


{
private double rayoninterne;
int couleur;
public Anneau() {
super();
rayoninterne=0.0;
couleur = 2;
}
public double diametreinterne()

{
return (super.diamètre() - rayoninterne*2);
}
public double surface()
{
return super.surface()-Math.pow(rayoninterne,2.0)*Math.PI;
}
}

package javaapplication8;
public class Main {

public Main() {
}

public static void main(String[] args) {


int x;
Disque d=new Disque();
Anneau a=new Anneau();
System.out.println(((Disque)a).couleur);
System.out.println(((Disque)a).surface());
}
}

Prof : Hafedh El Ayech Page 19

Vous aimerez peut-être aussi