Vous êtes sur la page 1sur 14

Devoir Java N°3

TAOUDI EL IDRISSI HANANE

FID 1
Exercice 1 :
-1. Créer un nouveau package nommé NbComplexes.

- 2. Dedans ce package, définir une classe Complexe comprenant deux champs de


type double, qui représentent respectivement la partie réelle et la partie imaginaire
d’un nombre complexe, tout en respectant le principe de l’encapsulation.

-3. Définir le constructeur dont la signature est public Complexe(double r, double i).

-4. Ecrire la méthode toString, dont la signature est public String toString() qui affiche
un nombre complexe sous la forme : a+b*i ou a-b*i ou ( +b*i ou –b*i dans le cas où
a=0) .

Réponses :
Le code :

package NbComplexes;
public class Complexe {
private double a; //La partie rèelle du nombre complexe.
private double b; //La partie imaginaire du nombre complexe.
public Complexe(double r,double i){
this.a=r;
this.b=i;
}
//La méthode toString qui permet l'écriture complexe.
public String toString(){
String Signe ;
Signe =(b>0)?"+":"-";
if(a==0.0 && b==0.0)
return "0";
else if(a==0.0)

return Signe+Math.abs(b)+"*i";
else if(b==0.0)

return ""+a;
else
return a+Signe+Math.abs(b)+"*i";
}
}

-5. Créer un nouveau fichier Test.java. Tester le constructeur et la méthode


d’affichage depuis la méthode main de ce fichier, en construisant différents nombres
complexes.

Le code :

package NbComplexes;

public class Test {


public static void main(String[] args) {
Complexe Cmp1 =new Complexe(2.0,2.0);
Complexe Cmp2 =new Complexe(3.0,0.0);
Complexe Cmp3 =new Complexe(4.5,4.2);
Complexe Cmp4 =new Complexe(0.0,5.0);
Complexe Cmp5 =new Complexe(0.0,-5.0);
Complexe Cmp6 =new Complexe(0.0,0.0);
System.out.println ("Le premier nombre complexe
est:\n"+Cmp1.toString());
System.out.println("Le deuxième nombre complexe
est:\n"+Cmp2.toString());
System.out.println("Le troixième nombre complexe
est:\n"+Cmp3.toString());
System.out.println("Le quatrième nombre complexe
est:\n"+Cmp4.toString());
System.out.println("Le cinquième nombre complexe
est:\n"+Cmp5.toString());
System.out.println("Le sixième nombre complexe
est:\n"+Cmp6.toString());

}}
6. Comment tester l’égalité entre deux nombres complexes ? Ecrire la méthode
appropriée puis essayer de la tester depuis la méthode main du fichier Test.java.

7. Enrichir la classe Complexe par les méthodes permettant de retourner pour un


nombre complexe :

- Sa somme avec un deuxième nombre complexe passé en paramètre.

- Son produit avec un deuxième nombre complexe passé en paramètre.

- Son conjugué.

- Son module.

- Son carré.

Réponses :

-Dans l’intention de tester l’égalité entre deux nombres


complexes , il suffit de comparer entre leurs composantes ,à
savoir les parties réelles d’une part et les parties imaginaires
d’une autre. Autrement dit deux nombres complexes sont
ésgaux si et seulement si leurs perties réelles sont égales ainsi
que leurs parties imaginaires.

Le code :

public boolean equals(Complexe Cmp){


if(a==Cmp.a && b==Cmp.b) {
System.out.println("Les deux nombres complexes sont bien
égaux!");
return true;
}
else {
System.out.println("Ces deux nombres ne sont pas égaux!");
return false;
}
}
public Complexe additionner(Complexe Cmp){
return new Complexe(a+Cmp.a,b+Cmp.b);
}

public Complexe multiplier(Complexe Cmp){


return new Complexe(a*Cmp.a-b*Cmp.b,a*Cmp.b+b*Cmp.a);
}
public Complexe conjugue(){
return new Complexe(a,-b);
}

public double module (){


return Math.sqrt(Math.pow(a,2)+Math.pow(b,2));
}

public Complexe carre (Complexe Cmp){


return multiplier(Cmp);
}

8. Testez-les depuis la méthode main du fichier Test.java.


package NbComplexes;

public class Test {


public static void main(String[] args) {
Complexe Cmp1 =new Complexe(2.0,2.0);
Complexe Cmp2 =new Complexe(3.0,0.0);
Complexe Cmp3 =new Complexe(0.0,0.0);
Complexe Cmp4 =new Complexe(0.0,5.0);
Complexe Cmp5 =new Complexe(0.0,-5.0);
Complexe Cmp6 =new Complexe(0.0,0.0);
Cmp3.equals(Cmp6);
System.out.println("La somme des deux nombres
est:\n"+Cmp4.additionner(Cmp5));
System.out.println("La multiplication des deux nombres est:
\n"+Cmp1.multiplier(Cmp3));
System.out.println("Le conjugué est: \n"+Cmp5.conjugue());
System.out.println("Le module est: \n"+Cmp4.module());
System.out.println("Le carré est: \n"+Cmp2.carre(Cmp6));

}}
Exercice 2 :
1. Sous Eclipse, créer un nouveau projet nommé « TP4EX2 ».

2. Créer deux packages nommés respectivement « Transport » et «


Application ».

3. Dedans le package « Transport » créer et implémenter la classes


Vehicule décrite dans le diagramme ci-dessus. Définissez un
constructeur prenant en paramètre les trois attributs correspondant à la
marque, la date d'achat et le prix d'achat. Le prix courant sera calculé
plus tard. Définissez une méthode public void affiche() qui affiche l'état
de l'instance, c'est-à-dire la valeur de ses attributs. La méthode void
calculePrix(int anneActuelle) fixe le prix courant au prix d'achat moins
2% par année (entre la date d'achat et la date actuelle).

Réponses :
package Transport;

public class Vehicule {


private String marque;
private int dateAchat;
private double prixAchat;
private double prixCourant;

public Vehicule(String marque, int date, double prix) {


this.marque = marque;
dateAchat = date;
prixAchat = prix;
prixCourant = prix;
}
public void affiche() {
System.out.print("marque : " + marque +
", date d'achat : " + dateAchat +
", prix actuel : " + prixCourant);
System.out.println();
}
public void calculePrix(int anneActuelle) {
double k = (anneActuelle - dateAchat) * 0.02;
prixCourant = Math.max(0.0, (1.0 - k) * prixAchat);
}

}
_Pour assurer que toutes les choses dérouleront bien ajoutons
les setters et les getters.

4. Dedans le package « Transport » créer les deux classes Avion et Voiture qui sont décrites
dans le diagramme UML mentionnés ci-dessous. Définissez, pour chacune de ces classes, un
constructeur permettant l'initialisation explicite de l'ensemble des attributs, ainsi qu'une
méthode affichant la valeur des attributs. Constructeurs et méthodes d'affichage devront
utiliser les méthodes appropriées de la classe parente. Redéfinissez la méthode void
calculePrix(int anneActuelle) dans les deux sousclasses Voiture et Avion de sorte à calculer le
prix courant en fonction de certains critères, et mettre à jour l'attribut correspondant au prix
courant :

 Pour une voiture, le prix courant est égal au prix d'achat, moins : o 2% pour chaque année
depuis l'achat jusqu'à la date actuelle o 6% pour chaque tranche de 10000km parcourus (on
arrondit à la tranche la plus proche) o 5% s'il s'agit d'un véhicule de marque "Renault" ou
"Fiat" (ou d'autres marques de votre choix) o et plus 10% s'il s'agit d'un véhicule de marque
"Ferrari" ou "Porsche" (ou d'autres marques de votre choix).

 Pour un avion, le prix courant est égal au prix d'achat, moins : o 5 % pour chaque tranche
de 150 heures de vol s'il s'agit d'un avion à hélices. o 10 % pour chaque tranche de 1100
heures de vol pour les autres types de moteurs.

Remarque : Le prix doit rester positif (donc s'il est négatif, on le met à 0)
-Pour la voiture :
class Voiture extends Vehicule {

private double cylindree;


private int nbPortes;
private double puissance;
private double kilometrage;

public Voiture(String marque, int date, double


prix,double cylindree, int portes, double cv, double km) {
super(marque, date, prix);
this.cylindree = cylindree;
nbPortes = portes;
puissance = cv;
kilometrage = km;

public void affiche() {


System.out.println("Voici les informations qui concerne la
voiture :");
super.affiche();
System.out.println(cylindree + " litres,+ nbPortes + " portes,
"+ puissance + " CV, " + kilometrage + " km."); }

public void calculePrix(int anneActuelle) {


double k = (anneActuelle - getDateAchat()) *0.02;
k += 0.05 * (int)(kilometrage / 10000);
if (getMarque().equals("Fiat")
||getMarque().equals("Renault")) { k += 0.1;}
else if (getMarque().equals("Ferrari") ||
getMarque().equals("Porsche")) { k -= 0.2;}
setPrixCourant(Math.max(0.0, (1.0 - k) * getPrixAchat()));}}
-Pour l’avion :
class Avion extends Vehicule {

private String moteur;


private int heuresVol;

public Avion(String marque, int date, double prix,


String moteur, int heures) {
super(marque, date, prix);
this.moteur = moteur;
heuresVol = heures;
}
public void affiche() {
System.out.println(" ---- " + moteur + "----
");
super.affiche();
System.out.println(heuresVol + " heures de
vol.");
}

public void calculePrix(int anneActuelle) {


double decote;
if (moteur == "HELICES") {
decote = 0.1 * heuresVol / 100.0;
} else {
decote = 0.1 * heuresVol / 1000.0;
}

setPrixCourant(Math.max(0.0, (1.0 - decote) *


getPrixAchat()));
}

}
5. Dedans le package « Application » créer et implémenter la classe exécutable
GestionVehicule .

6. Améliorez la méthode main ci-dessus en tenant compte du fait que tous les véhicules ont
un type commun: Vehicule.

7. Modifier le modificateur protected des attributs de la super classe Vehicule par private,
puis effectuer les modifications nécessaires pour pouvoir exécuter à nouveau le
programme .

Vous aimerez peut-être aussi