Vous êtes sur la page 1sur 9

Facult NTIC (Universit Constantine 2 Abdelhamid Mehri)

Dpartement MI (Anne Universitaire 2015-2016)


Module : IPO / 1re anne MI

TP1 - Solutions proposes


Exercice 1
1) Run => Java application => OK

Un message derreur saffiche : "Selection does not contain a main type".

On ne peut pas excuter, car il n'y a pas la mthode principale "main".

2) Le fichier "Point.class" a t cr dans le rpertoire "bin".

3) La classe TestPoint.java :

public class TestPoint {


public static void main(String[] args)
{
System.out.println ("Dbut de programme");
System.out.println ("Fin de programme");
}}
Le message "Hello" n'apparat pas car, le main ne cre aucun objet de la classe TestPoint.

4) La reprsentation graphique :
public class TestPoint
{
public static void main(String[] args)
{
Point p1 = new Point (2, 5, "Blanc");
Point p2 = new Point ();
Point p3, cloneP;
p3 = new Point(p2);
}
}

Point
Point

p1
Point
cloneP
double double String

Point 2 5 "Blanc"
Point
x y couleur

p2 Point p3 Point
double double String
double double String
0 0 null
0 0 null
1
x y couleur
x y couleur
5) Ajouter linstruction : "cloneP = p1;"

Point
Point

cloneP
p1 Point

double double String

2 5 "Blanc" Point
x y couleur
Point
p3 Point

double double String


p2 Point
0 0 null
double double String
x y couleur
0 0 null

x y couleur

6) On supprime lobjet p1 avec linstruction : p1 = null;


Si on supprime p1, l'objet de variables d'instance x=2, y=5 et couleur="Blanc" ne se perd pas et
reste rfrenc par la variable cloneP.

Point Point

p1 cloneP
Point

double double String

2 5 "Blanc"

x y couleur Point
Point

p3 Point
p2 Point
double double String
double double String
0 0 null
0 0 null
x y couleur
x y couleur

7) Le rsultat de l'excution :
Hello : constructeur 1 Point(double,double,String)
Hello : constructeur 2 Point(Point)
Je suis un point de coordonnes 3.0 6.0 et de couleur : vert.
Je suis un point de coordonnes 3.0 6.0 et de couleur : vert.
Je suis un point de coordonnes 3.0 6.0 et de couleur : vert.

2
8) Deux objets de mmes caractristiques sont crs. Le premier est rfrenc par les variables
monPoint1 et monPoint2 et le deuxime par la variable monPoint3.

Exercice 2
public static void main(String[] args) {
Compte c1= new Compte (13,"Benali", 20000);
Compte c2= new Compte (12,",Benmohamed", 1000);
c1.retrait(8000);
c1.affiche();
c2.solde = c2.solde+2000;
c2.affiche();
System.out.println("le contenu de la rfrence c1 est : "+c1);
System.out.println("le contenu de la rfrence c2 est : "+c2.toString());
c2=c1;
System.out.println("le contenu de la rfrence c2 aprs affectation est : "+c2);
c2.affiche();
}

1. Le rsultat de l'excution du code ci-dessus est :

Benali Num:13 Solde: 12000.0


,Benmohamed Num:12 Solde: 3000.0
le contenu de la rfrence c1 est :
Compte@14b7453
le contenu de la rfrence c2 est :
Compte@c21495
le contenu de la rfrence c2 aprs
affectation est : TP1.Compte@14b7453
Benali Num:13 Solde: 12000.0

l'affichage d'une rfrence (en occurrence ici c1 ou c2) est un appel implicite la mthode
toString() prdfinie qui permet d'afficher les caractristiques d'un objet : le nom de la classe de
l'objet et son adresse.

2. Si la mthode main est place dans une autre classe, une erreur d'accs la variable
prive survient. On la corrige en :
- Remplaant la ligne c2.solde=c2.solde+2000; par c2.depot(2000);
3. La mthode d'instance qui permet de supprimer un compte est la suivante :
public Compte supprime () { return null;}
Exemple d'excution insrer dans le main:

c1 = c1.supprime();

Exercice 3
Cration de la classe Robot1G:

3
Test de la classe Robot1G:

4
Facult NTIC (Universit Constantine 2 Abdelhamid Mehri)
Dpartement MI (Anne Universitaire 2015-2016)
Module : IPO / 1re anne MI

TP2 - Solutions proposes


Exercice 1
Indications :
La classe Segment possde, comme variables d'instance, deux objets membres :
Point origine, extremite ;
Constructeurs :
public Segment(Point origine, Point extremite){ this.origine = origine ; this.extremite =
extremite;}

public Segment (double xOr, double yOr, double xExt, double yExt
{ origine = new Point (xOr, yOr) ; extremite = new Point (xExt, yExt) ;}

Mthodes d'instance :
public void deplaceOrigine (double dx, double dy) {origine.deplace(double dx, double dy);}
public void deplaceExtremite (double dx, double dy) {extremite.deplace(double dx, double dy);}
public void affiche() {System.out.println("Les coordonnes des deux points du segment sont : ";
origine.affiche();extremite.affiche();)
}

Exercice 2
1. nbRobot est une variable de classe car elle ne reprsente pas une caractristique d'un
objet robot (elle ne fait pas partie de son tat). C'est une variable de la classe, stocke
dans la classe et partage par tous les objets de type Robot1G. Chaque robot peut la
manipuler en lecture ou en criture.

2. nbRobot()est une mthode de classe car elle ne reprsente pas un comportement d'un
objet Robot1G. Elle permet juste d'afficher la variable de classe nbRobot. L'activation
de cette mthode ne ncessite pas un objet. Elle est active partir du nom de sa classe.
Robot1G.nbRobot();.

3. plusRapide(Robot1G r1, Robot1G r2) est une mthode de classe car elle ne
reprsente pas un comportement d'un objet de type Robot1G. Elle prend en arguments
deux instances Robot1G et compare leur vitesse.

I)
1. Dans la nouvelle version de la classe Robot1G, on doit :
Ajouter la dclaration de la variable de classe :
private static int nbRobot=0;

Modifier les constructeurs pour tenir compte de l'augmentation du nombre des robots et
de la nouvelle affectation du nom d'un robot.

5
public Robot1G ()
{
nbRobot ++;
this.nom = "robot"+nbRobot;
this.x = 0;
this.y = 0;
this.vitesse = 2;
}

public Robot1G (double x, double y, int vitesse)


{
nbRobot ++;
this.nom = "robot"+nbRobot;
this.x = x;
this.y = y;
this.vitesse = vitesse;
}

Ajouter la mthode de classe nbRobot () :

public static void nbRobot ()


{
System.out.println ("Le nombre des robots cres = "+nbRobot);
}

Ajouter la mthode de classe plusRapide (Robot1G r1, Robot1G r2) :

public static void plusRapide (Robot1G r1, Robot1G r2)


{if (r1.vitesse > r2.vitesse)
System.out.println (r1.nom + " est plus rapide que "+ r2.nom);
else
if (r1.vitesse < r2.vitesse)
System.out.println (r2.nom + " est plus rapide que "+ r1.nom);
else
System.out.println (" La vitesse du "+r1.nom + " est gale la vitesse du
"+ r2.nom);
}

2. Ajouter la mthode main dans la classe Test2 :

public class Test2


{ public static void main (String [] args)
{
Robot1G r1 = new Robot1G (2, 6, 3);
Robot1G r2 = new Robot1G ();
r1.accelerer();
r2.stop();
r1.sePresenter();
r2.sePresenter();
Robot1G.plusRapide(r1, r2);
Robot1G.nbRobot();
}
}

La position du robot est : 0.0 0.0


robot1 : La position courante du robot est : 2.0 6.0 Vitesse = 4
robot2 : La position courante du robot est : 0.0 0.0 Vitesse = 0
robot1 est plus rapide que robot2
Le nombre de robots cres = 2

Exercice 3 (Voir le cours)

6
Facult NTIC (Universit Constantine 2 Abdelhamid Mehri)
Dpartement MI (Anne Universitaire 2015-2016)
Module : IPO / 1re anne MI

TP3 - Solutions proposes


Exercice 1
1)
a. Les attributs de la classe Enfant sont : x (hrit), y.
b. Les attributs de la classe PetitEnfant sont : x (hrit), y (hrit) et z.

2) Les constructeurs + la mthode moi ()

public Enfant (int k, int l)


{ super (k);
y = l;}

public PetitEnfant (int k, int l, int m)


{ super (k,l);
z = m; }

public void moi ()


{ super.moi();
System.out.println ("y = "+ y);}

3)
Dfinition : le nom de polymorphisme vient du grec et signifie qui peut prendre plusieurs
formes.
Le polymorphisme peut tre vu comme la capacit de choisir dynamiquement la
mthode qui correspond au type rel de lobjet.
Exemples :
ajoute (int a) est une mthode polymorphe.
moi () est une mthode polymorphe.

4) Le rsultat dexcution de la classe :


x = 3
ajoute(2)= 5
x = 3 y = 4
ajoute(2)= 9
x = 3 y = 4 z = 5
ajoute(2)= 14

Exercice 2
public class B extends A {
public void afficher() { System.out.println(i+a+b); }
} //cette mthode doit tre supprime car elle est hrite de la super-
classe A.

public class D {
Public A aa;
D() { aa= new A()};
Public void afficher() { System.out.println(aa.i + aa.a + aa.b); }
} //celle mthode doit tre supprime et remplace par une invocation de la
mthode afficher().
aa.afficher()

7
Exercice 2
La classe Personne possde :
- Deux variables d'instances nom et age.
- Un constructeur
- Une mthode d'instance superieur(Personne p) qui permet de comparer l'objet avec
un autre objet p

public class Personne {


protected String nom;
protected int age;
public Personne(String Nom, int Age){nom=Nom;age=Age;}
public void superieur(Personne p){
if (this.age<p.age) System.out.println(p.nom+" est plus ag que "+this.nom);
else if (this.age>p.age)
System.out.println(this.nom+" est plus ag que "+p.nom);
else System.out.println(this.nom+" a le mme age que "+p.nom);
}
}

La classe Etudiant est une sous_classe de Personne qui possde :


- La variable d'instance nbAnneEtude
- Un constructeur
- La mthode d'instance redfinie superieur(Etudiant e) qui permet de comparer
l'objet avec un autre objet e

public class Etudiant extends Personne{


private int nbAnneEtude;
public Etudiant(String Nom,int Age,int NBA){super(Nom,Age);nbAnneEtude=NBA;}
public void superieur(Etudiant e){
if (this.nbAnneEtude<e.nbAnneEtude)
System.out.println(e.nom+" a un nombre d'annes d'tudes suprieur "+this.nom);
else
if (this.nbAnneEtude>e.nbAnneEtude)
System.out.println(this.nom+" a un nombre d'annes d'tudes suprieur "+e.nom);
else System.out.println(this.nom+" ont le mme nombre d'annes d'tudes "+e.nom);
}}

La classe Travailleur est une sous_classe de Personne qui possde :


- La variable d'instance salaire
- Un constructeur
- La mthode d'instance redfinie superieur(Travailleur t) qui permet de comparer
l'objet avec un autre objet e

public class Travailleur extends Personne{


private double salaire;
public Travailleur(String Nom,int Age,double Salaire) {super(Nom,Age);salaire=Salaire;}
public void superieur(Travailleur t){
if (this.salaire<t.salaire)
System.out.println(t.nom+" a un salaire suprieur "+this.nom);
else if (this.salaire>t.salaire)
System.out.println(this.nom+" a un salaire suprieur "+t.nom);
else System.out.println(this.nom+" ont le mme salaire "+t.nom);
}
}

public class Test {


public static void main(String[] args) {
Personne p1=new Personne("Ahmed",23);
Personne p2=new Personne("Redha",25);
p1.superieur(p2);
Etudiant e1=new Etudiant("Ahmed",23,4);

8
Etudiant e2=new Etudiant("Redha",25,5);
e1.superieur(e2);
Travailleur t1=new Travailleur("Ahmed",23,30000);
Travailleur t2=new Travailleur("Redha",25,40000);
t1.superieur(t2);
}

Exercice 3

Ralisation de la classeRobot2G :