Vous êtes sur la page 1sur 7

Université Ibn Zohr

Faculté des Sciences Agadir


Filière Sciences Mathématique & Informatique (SMI)

Filière : SMI5 & LPI (licence Professionnelle)


Module : programmation Distribuée
Cours : Programmation Orienté Objet avec Java
Responsable du cours : Karim AFDEL

Série TD/TP N°1 et N°2


Exercice 1
Vous avez déposé 10000F à la Caisse d'Epargne et vous souhaitez savoir comment cette somme va
évoluer. Chaque année elle rapporte 4,5% d'intérêts, ce qui signifie qu'elle est multipliée par 1,045.
Essayez de connaître le montant de votre capital après 5 ans en utilisant la boucle FOR.
Nous avons déposé 10000F à la Caisse d'Epargne et nous souhaitons savoir combien d'années il faudra
attendre pour que le capital obtenu dépasse 15000F. Nous allons utiliser une boucle WHILE pour
indiquer que tant que le capital ne dépasse pas 15000F il faut attendre une année de plus.
Exercice 2
Ecrire un programme qui lit trois paramètres : un nombre entier, un caractère représentant une
opération (+,-,x ou /) et un second nombre entier, puis qui effectue le calcul ainsi indiqué et affiche
le résultat. (Attention à éviter les divisions par 0)
Note :

1- on ne peut pas utiliser le signe * comme paramètre, il a une signification particulière.


2- Utilisez l’instruction switch
Exercices n°3
Soit les notes d'une classe de 10 étudiants :
12.0 15.50 13 8 7.25 18 10 11 15 16
Ecrire un programme Java permettant de
1- Calculer et afficher la note maximum et minimum de la classe;
2- Calculer et afficher la moyenne de la classe;
3- Déterminer combien d'étudiant ayant une note supérieur à la note de la classe ;
4- Déterminer la mention de chaque étudiant.
note <10 mention aucun
note <=12 && note >=10 mention passable;
note <14 && note >12 mention assez bien;
note <16 && note >=14 mention bien.
Série TD/TP n°2
Exercices 1
 Un compte bancaire possède à tout moment une donnée : son solde. Ce dernier peut être positif
(compte créditeur) ou négatif (compte débiteur).
 Chaque compte est caractérisé par un code incrémenté automatiquement.
 A sa création, un compte bancaire a un solde nul et son code incrémenté.
 Il est aussi possible de créer un compte en précisant son solde initial.
 Utiliser son compte consiste à pouvoir y faire des dépôts et des retraits. Pour ces deux
opération, il faut aussi consulter le solde de son compte par la méthode toString().
 Un compte Epargne est u compte bancaire qui possède en plus un champ "TauxIntérêt=6" et une
méthode calculIntérêt() qui permet de mettre à jour le solde en tenant compte des intérêts.
 Un compte payant est un compte bancaire pour lequel chaque opération de retrait et de versement
est payante et vaut 5dh
Question:
1. Faire le diagramme des classes
2. Définir la classse CompteBancaire
3. Définir la classe CompteEpargne
4. Définir la classe comptePayant.

1
Université Ibn Zohr
Faculté des Sciences Agadir
Filière Sciences Mathématique & Informatique (SMI)

5. Définir la classe contenant la fonction main() permettant de tester les classe: Comptebancaire
et CompteEpargne avec les actions suivates:
a. Créer une instance de la classe Compte bancaire, une autre de la classe Compte
Epargne et une instance de la classe ComptePayant.
b. Faire appel à la méthode deposer() de chaque instance pour déposer une somme
quelconque dans son ces comptes.
c. Faire appel à la méthode retirer() de chaque instance pour retirer une somme
quelconque dans son ces comptes.
d. Faire appel à la méthode CalculIntérêt du compte Epargne.
e. Afficher le solde des 3 comptes.
Exercice 2
On souhaite développer un programme de calcul de salaire pour une entreprise PME, l’analyse du
service « salaire » de cette entreprise a permis d’aboutir aux informations suivantes :

Information Description
Matricule Unique pour chaque employé e ne peut être modifié
Nom Chaîne de caractère
Adresse Chaîne de caractère Caractères
Salaire Réel

1- Donner la déclaration de la classe Employé Comportant au moins un constructeur et les méthodes


d’accès.
2- Cette entreprise comporte plusieurs types d’employés :
i. Des employés qui sont payés suivant le nombre d’heures qu’ils ont travaillé dans
la semaine. Ils sont payés à un certain tarif horaire.
ii. D’autres employés, payés au forfait par jour.
iii. Les commerciaux sont payés avec une somme fixe pour la semaine.
2.1 Donnez les classes qui héritent de la classe Employe et redéfiniront la méthode
SetSalaire() pour chaque type des employés. Les classes comporteront deux contructeurs : un
qui ne prend en paramètre que le matricule, le nom et l’adresse de l’employé et l’autre qui
prend en paramètres en plus toutes les informations pour le calcule du salaire.
3- Une classe Paie comportera une unique méthode main() qui entrera les informations sur des
employés des différents types(3 commerciaux, 2 de type i.et 2 de type ii.).
a. Les employées seront enregistrées dans un tableau Employé.
b. Au moins un des employés sera créé avec le constructeur ne possédant comme
paramètres que le Matricule, le Nom et l’Adresse et vous entrerez ensuite les
informations pour son salaire avec la méthode setSalaire().
c. Pour un autre employé, vous utilisez le constructeur pour entrer les informations sur le
salaire.
d. Ecrire une méthode qui affichera le salaire hebdomadaire de chacun des employés et la
masse salariale Hebdomadaire des employés enregistrés dans le tableau.

2
Université Ibn Zohr
Faculté des Sciences Agadir
Filière Sciences Mathématique & Informatique (SMI)

Solution n°1 & n°2


Exercise 1
public class epargne2 {
public static void main(String args[]) {
int n=0; //nombre d'années
double capital=10000;
while (capital<15000) { capital=capital*1.045; n++; }
System.out.println("Le capital dépasse 15000F après "+n+" années.");
System.out.println("Sa valeur est alors "+capital+"F."); }
}

Exercice 2
import java.lang.*;
import java.io.*;
public class calculette {
public static void main(String args[])throws IOException {
BufferedReader stdin = new BufferedReader (new InputStreamReader(System.in));
int n1;
String op, inData1,inData2,inData3;
int n2;
int rep=0;
System.out.println("entre un nombre entier n1");
inData1 = stdin.readLine();
n1= Integer.parseInt( inData1 );

System.out.println("entre un nombre entier n2");


inData2 = stdin.readLine();
n2= Integer.parseInt( inData2 );

System.out.println("entre un caractère");
op = stdin.readLine();

switch (op.charAt(0)) {
case '+' : rep=n1+n2; break;
case '-' : rep=n1-n2; break;
case 'x' : rep=n1*n2; break;
case '/' :
if (n2==0) {
System.out.println("Division par zéro !");
System.exit(1);
}
else rep=n1/n2;
break;
default :
System.out.println("Opérateur inconnu.");
System.exit(2);
} System.out.println(rep); }
}
Exercice 3
import java.lang.*;
import java.io.*;
public class minmax {
public static void main(String args[]) throws IOException

3
Université Ibn Zohr
Faculté des Sciences Agadir
Filière Sciences Mathématique & Informatique (SMI)

{
//double [] note ={10,12.5,7,8.5,19};
double [] note =new double [5];
double min=21.5,max=0.0,s=0,moyen_classe;
int nbetudiantsupmax=0;
BufferedReader stdin=new BufferedReader(new InputStreamReader(System.in));
String inData;
for(int i=0; i<note.length; i++)
{
System.out.println("entrez la note n "+i+ ":");
inData= stdin.readLine();
note[i]=Double.parseDouble(inData);
}

// l'affichage des notes


for(int i=0; i<note.length; i++)
System.out.println("l'element i du tableau vaut "+ note[i]);
// determination la note min et max
for(int i=0; i<note.length; i++)
{
if (note[i] > max ) max = note [i];
if (note[i] < min ) min = note [i];}
System.out.println("le max du tableau vaut "+ max);
System.out.println("le min du tableau vaut "+ min);
// determination de la note moyen de la classe
for(int i=0; i<note.length; i++) s+=note[i];
moyen_classe=s/(double)5;
System.out.println("le min du tableau vaut "+moyen_classe);
// determination nbr etudiant
for(int i=0; i<note.length; i++)
if (note[i]> moyen_classe) nbetudiantsupmax++;
System.out.println("nb etudaint ayant une note superieur à la +
moyen de la classe "+nbetudiantsupmax);
}
}

Série n°2
package Banque;
public class COMPTE {
public static int nbComptes=0;
protected float solde;
private int code;
public COMPTE(float soldeInitial){
nbComptes++;
code=nbComptes;
solde=soldeInitial; }

public int getCode(){return code;}


public float getSolde(){return solde;}
public void retirer(float mt){if(mt<solde)solde-=mt;}
public String toString(){
return("Code: "+Integer.toString(code)+" | Solde: "+Float.toString(solde));}
public void verser(float mt){solde+=mt; }
}

4
Université Ibn Zohr
Faculté des Sciences Agadir
Filière Sciences Mathématique & Informatique (SMI)

++++++++++++++++++++Classe COMPTE_PAYANT++++++++++++++++++++++++++++++++++++++++++
package Banque;
public class COMPTE_PAYANT extends COMPTE{
private final float tauxOperation=5;
public COMPTE_PAYANT(float soldeInitial){
super(soldeInitial);}
public void retirer(float mt){super.retirer(mt+tauxOperation);}
public String toString(){
return(super.toString()+" | Montant de l'opération: "+tauxOperation+"\n"); }
public void verser(float mt){ super.verser(mt-tauxOperation);
}}
++++++++++++++++++++++++++++ Classe COMPTE_EPARGNE+++++++++++++++++++++++++
package Banque;
public class COMPTE_EPARGNE extends COMPTE{
private float taux;
deposer
public COMPTE_EPARGNE(float soldeInitial){
super(soldeInitial);}
public void calculInterets(){
solde=solde*(1+taux);}
public float getTaux(){
return taux;}
public void setTaux(float t){
taux=t; }
public String toString(){
return(super.toString()+" | Taux: "+taux+"\n");
}
}
+++++++++++++++++++++++++++++++++++++++++++++++Classe Teste+++++++++++++++++++++++++
package Banque;
class TESTE_COMPTES{
public static void main(String[] arg){
COMPTE c=new COMPTE(2300);
c.verser(700);
c.retirer(500);
System.out.println(c.toString()+"\n");
System.out.println("Solde= "+c.getSolde()+"\n");
COMPTE_EPARGNE c2=new COMPTE_EPARGNE(4000);
c2.setTaux(0.06F);
System.out.println(c2.toString()+"\n" );

COMPTE_PAYANT c3=new COMPTE_PAYANT(5000);


c3.verser(1000);
System.out.print(c3.toString());
}
}

5
Université Ibn Zohr
Faculté des Sciences Agadir
Filière Sciences Mathématique & Informatique (SMI)

package employe;
class Employe {
protected String nom;
protected double salaire;
public Employe(String _nom) { this.nom = _nom; }
public String getNom() { return nom; }
public void setSalaire(){};
public double getSalaire(){return salaire;}
public String toString() { return " nom=" + this.getNom()+ "salaire="+this.getSalaire(); }
}
// class EmployeHoraire
package employe;
class EmployeHoraire extends Employe {
private double nbHeures ;
private double tarifHoraire;
public EmployeHoraire(String _nom, double nbHeures, double tarifHoraire) {
super(_nom);
this.nbHeures = nbHeures;
this.tarifHoraire = tarifHoraire;}
public double getNbHeures() {return nbHeures;}
public double getTarifHoraire() {return tarifHoraire;}
@Override
public void setSalaire() {salaire= tarifHoraire * nbHeures;}
@Override
public String toString() {return super.toString() + ";nbHeures=" + nbHeures
+ "; tarif horaire=" + tarifHoraire + "; % HS="; }}
****************************************Classe
Commercial*******************************
package employe;
public class Commercial extends Employe {
private double fixe ;
public Commercial(String _nom, double _fixe) {
super(_nom);
this.fixe = _fixe; }
public void setFixe(double _fixe) {
if (fixe >= 0) { this.fixe = _fixe; }
}
@Override
public void setSalaire() { salaire=fixe; }
@Override
public String toString() { return super.toString() + ";fixe=" + fixe ; }}
// class Paie
package employe;
public class Paie {
public static void main(String[] args) {
Employe[] empl = new Employe[7];
empl[0]=new Commercial("Toto",6000.0);
empl[1] = new Commercial("Bibi", 6500);

6
Université Ibn Zohr
Faculté des Sciences Agadir
Filière Sciences Mathématique & Informatique (SMI)

empl[2] = new Commercial("Dédé", 5000);


empl[3] = new EmployeHoraire("Riri", 41, 200);
EmployeHoraire e5 = new EmployeHoraire("Loulou",12,50);
empl[4] = e5;
empl[5] = new EmployeHoraire("Momo",45,100);
double masse_salariale=0.0;
for (int i = 0; i < 6; i++) {
System.out.print(+"\n");
empl[i].setSalaire();
masse_salariale+= empl[i].getSalaire();

System.out.println("l'employe nom:="empl[i].getNom()+"gagne " +


empl[i].getSalaire() + " euros \n"); }
System.out.println("Masse salariale est : "+ masse_salariale);

}
}

Vous aimerez peut-être aussi