Accéder au contenu principal
Exercice1 : Calcul des impôts locaux Dans le cadre de l’informatisation d’une mairie, on veut automatiser le calcul des impôts locaux. On distingue deux catégories d’habitation : les habitations à usage professionnel et les maisons individuelles, l’impôt se calculant différemment selon le type d’habitation.Pour cela ,on définit les classes HabitationProfessionnelle et HabitationIndividuelle et les caractéristiques communes à ces deux classes sont regroupées dans la classe Habitation. L’objectif du problème est d’implémenter ce schéma d’héritage et de mettre en œuvre le mécanisme de liaison dynamique. A) Définition de la classe Habitation : La classe Habitation comprend les attributs : -propriétaire du type chaine de caractères et qui correspond au nom de propriétaire, -adresse du type chaine de caractères et qui correspond à l’adresse de l’habitation, -surface du double et qui correspond à la surface de l’habitation, Les méthodes : -Impot ( ) qui permet de calculer le montant de l’impôt que doit payer le propriétaire de l’habitation, à raison de 10DH par mètre carré. -Affiche ( ) qui permet d’afficher les trois attributs de la classe Habitation. -Un constructeur à trois paramètres permettant d’initialiser une instance de la classe Habitation. B) Définition des classes HabitationProfessionnelle et HabitationIndividuelle :  Le calcul de l’impôt d’une maison individuelle est différent de celui d’une habitation, il se calcule en fonction de la surface habitable, du nombre de pièces et de la présence ou non d’une piscine. On compte 100DH par pièce et 400DH supplémentaires en cas de présence d’une piscine -Ajouter les attributs NbPieces de type entier et Piscine de type booléen. -Redéfinir les méthodes afficher et impot.  Le calcul d’une habitation à usage professionnel est également différent de celui d’une habitation. Il se calcule en fonction de la surface occupée et le nombre d’employés.On compte 60DH supplémentaires pour chaque employs. -Ajouter l’attribut NbEmployes de type entier. -Redéfinir les méthodes afficher et impot. 2 C) Gestion des habitations d’une commune On désire à présent calculer l’impôt local des habitations (individuelles ou professionnelles) d’une commune. Pour cela,on utilise une collection d’objets représentée par un tableau où chaque élément désigne une habitation individuelle ou professionnelle. -Définir la classe Commune. -Définir une méthode add permettant d’ajouter une habitation à une commune -Définir une méthode show pour afficher toutes les habitations de la commune.





                                                 TELECHARGE ICI









package tp3;

public class Habitation {
String propriétaire;
String adresse;
Double surface;



public String getPropriétaire() {
return propriétaire;
}


public void setPropriétaire(String propriétaire) {
this.propriétaire = propriétaire;
}


public Habitation(String propriétaire, String adresse, Double surface) {
super();
this.propriétaire = propriétaire;
this.adresse = adresse;
this.surface = surface;
}


public String getAdresse() {
return adresse;
}


public void setAdresse(String adresse) {
this.adresse = adresse;
}


public Double getSurface() {
return surface;
}


public void setSurface(Double surface) {
this.surface = surface;
}
public double Impot() {
return this.surface*10;
}


public void affiche() {
System.out.println("la surface :"+this.surface+"l'adresse"+this.adresse+"proprietre"+this.propriétaire);
}

}







package tp3;

public class HabitationProfessionnelle extends Habitation {
public HabitationProfessionnelle(String propriétaire, String adresse, Double surface, int nbEmployes) {
super(propriétaire, adresse, surface);
NbEmployes = nbEmployes;
}

int NbEmployes;
public double Impot() {
return this.NbEmployes*60;
}
public void affiche() {
System.out.println("la surface :"+this.surface+"l'adresse"+this.adresse+"proprietre"+this.propriétaire+"nbreEmployer:"+this.NbEmployes);
}

}






package tp3;

public class HabitationIndividuelle extends Habitation{
int NbPieces ;
boolean Piscine;

public HabitationIndividuelle(String propriétaire, String adresse, Double surface, int nbPieces, boolean piscine) {
super(propriétaire, adresse, surface);
NbPieces = nbPieces;
Piscine = piscine;
}


public int getNbPieces() {
return NbPieces;
}


public void setNbPieces(int nbPieces) {
NbPieces = nbPieces;
}


public boolean isPiscine() {
return Piscine;
}


public void setPiscine(boolean piscine) {
Piscine = piscine;
}


public double Impot() {
if(Piscine==false) {
return this.NbPieces*100;}
return this.NbPieces*100+400;
}

public void affiche() {
System.out.println("la surface :"+this.surface+"l'adresse"+this.adresse+"proprietre"+this.propriétaire);
}

}






package tp3;

public class Commune {
Habitation[] tableau ;
    int i,tm;
public Commune( int i) {
super();
this.i = i;
this.tableau =new Habitation[i];
}
public Habitation[] getTableau() {
return tableau;
}
public void setTableau(Habitation[] tableau) {
this.tableau = tableau;
}
public int getI() {
return i;
}
public void setI(int i) {
this.i = i;
}
    public void add(Habitation tr) {
    tableau[tm]=tr;
    tm++;
   
    
    
    public void show() {
   
   
    for (Habitation compte : tableau) { 
   
    compte.affiche();


    }
    
  pour tester   
 public static void main(String[] args) {
Commune tr=new Commune(3);
Habitation r=new Habitation("toufiik","mzili",1000.0);
Habitation rr=new HabitationIndividuelle("yahya","30 ibn sina",123.4, 6, true);
Habitation rrr=new HabitationProfessionnelle("jamal","hay amal",1234.5, 10);


tr.add(r);
tr.add(rr);
tr.add(rrr);
tr.show();

 
 
 
 }
}

Commentaires

Posts les plus consultés de ce blog

 Dans le cadre de l’informatisation d’une entreprise, un directeur souhaite automatiser la gestion des salaires de ses employés pour cela on aura : -Une classe Employe : Un employé est caractérisé par : +ces attributs : nom(chaine de caractères), son prénom(chaine de caractères) et son âge(entier),son année de recrutement(entier) +Ces méthodes : -Un constructeur a quatre paramètres permettant d’initialiser une instance de la classe Employe. +Affiche() :qui permet d’afficher les quatre attributs de la classe Employe. +CalculSalaire() :permet de renvoyer le salaire mensuel d’un employé mais ce calcul dépend du type de l'employé. On distingue les types d'employés suivants qui seront définie dans les classes suivantes: -Producteur : Leur salaire vaut le nombre d'unités produites mensuellement multipliées par 5 : Ajouter l’attribut NbUnités de type entier ;Définir la méthode CalculSalaire() ;Redéfinir la méthode Affiche( ) -Commercial : Leur salaire mensuel se calcule en fon

Les exceptions:Saisie d'un mot de passe

Exercice 3- Saisie d'un mot de passe Dans les failles de sécurité réseau, on trouve très souvent les problèmes de dépassement. Par exemple, sur certaines anciennes versions de telnet, un login ou un mot de passe de plus d'un mega-octet faisait "planter" le programme et on obtenait alors un accès root au système. Ce programme va gérer ce type de problème en séparant les exceptions pour une meilleure gestion. 1- Écrire un programme stand-alone qui demande en boucle un nom d'utilisateur (login) et un mot de passe (pwd) jusqu'à recevoir un login/pwd correct. Le seul utilisateur référencé sera scott / tiger ( à mettre en constante dans la classe principale ). 2- Implémenter les exceptions suivantes: * WrongLoginException qui se produit lorsque l'utilisateur saisit un login inexistant * WrongPwdException lorsque le mot de passe est erroné * WrongInputLength lorsque le login où le pwd saisi dépasse 10 caractères. 3- Implémenter de façon à utiliser

Exception:L'âge du capitaine

Exercice 2- L'âge du capitaine 1- Écrire une méthode getAgeCap() qui demande l'âge du capitaine. Cet âge doit être compris entre 18 et 65 ans et doit être un entier sous peine de lever une AgeCapException. Vous implementerez cette exception pour qu'elle renvoie une description explicite du type "[proposition] ans n'est pas un âge valide". Le programme devra également être en mesure de capturer tout type d'exception autre queAgeCapException. 2- Dans un premier temps, la méthode getAgeCap() propagera l'exception à la méthode appelante qui la traitera. 3- Modifier le programme pour que ce soit la méthode getAgeCap() qui traite l'exception. 4- Modifier encore le programme pour que getAgeCap() traite l'exception mais lève une seconde exception de type Exception pour signaler à la méthode appelante qu'une erreur s'est produite et que cette dernière comptabilise le nombre d'essais infructueux et l'affiche. Le programme d
Exercice2 : Ecrivez une interface Forme avec les méthodes abstraites suivantes: - perimetre(): renvoie le périmètre de la forme, - aire(): renvoie l'aire de la forme. Ecrivez une classe Carre et Rectangle implémentant l'interface Forme avec les attributs suivants:carre(cote:le coté du carré) et Rectangle ( longueur et largeur) Ces deux classes doivent disposer les constructeurs suivants: -Carre( ),Carre(cot). -Rectangle( ),Rectangle( largeur,longueur). Elles doivent contenir des accesseurs et mutateurs pour leurs différents attributs,et les méthodes suivantes: - perimetre( ): Donne le périmètre de la forme, - aire( ): Donne l'aire de la forme, - toString( ): Donne une représentation de la forme Ecrivez aussi une classe de testForme afin de tester les classes.                                                       TELECHARGER ICI package exo2; public interface Forme {      public double perimetre();    public double aire(); } package

Il s'agit de modéliser un segment de droite dont les valeurs des deux extrémités sont entières. Si on échange les deux extrémités, on considère qu'il s'agit encore du même segment. La classe Segment comporte les méthodes suivantes un constructeur de ce segment recevant en argument les deux valeurs entières des extrémités du segment que l'on veut construire une méthode retournant la longueur du segment une méthode nommée ordonne échangeant éventuellement les valeurs des extrémités du segment de telle sorte que la valeur de extr1 soit au plus égale à la valeur de extr2 une méthode testant si un entier donné se trouve sur le segment (c'est dire s'il est compris entre la plus petite et la plus grande valeur des extrémités du segment). public String toString() :Celle ci décrira une instance de Segment sous la forme d'une chaîne de caractères (par exemple, le segment d'extrémités 35 et 44 pourra être transformé en la chaîne de caractères : "segment [ 35, 44]") (la plus petite extrémité est toujours indiquée à gauche). Ecrivez aussi une autre classe EssaiSegment comportant la méthode main et permettant de tester les méthodes de la classe Segment

package tp2; public class exo1Segment { int extr1 , extr2; public int getExtr1() { return extr1; } public void setExtr1(int extr1) { this.extr1 = extr1; } public int getExtr2() { return extr2; } public void setExtr2(int extr2) { this.extr2 = extr2; } public exo1Segment(int extr1, int extr2) { super(); this.extr1 = extr1; this.extr2 = extr2; } public exo1Segment() { this.extr1 = 0; this.extr2 = 0; } public int  longueur(){ return (int) Math.sqrt(Math.abs(Math.pow(extr1, 2)+Math.pow(extr2, 2))); } public void  ordone(){ int ech; if(extr1>extr2){ ech=extr1;     extr1=extr2;     extr2=ech;} } public boolean isIn(int x){ if(x>Math.min(extr1, extr2) && x<Math.max(extr1, extr2) ) return true; return false; } public String toString(){ return  "segment ["+Math.min(extr1, extr2)+","+ Math.max(extr1, extr2)+"]"; } }

Exercice2 : Ecrivez une classe Complexe représentant des nombres complexes. Un nombre complexe comporte une partie réelle et une partie imaginaire (partieReelle + partieImaginaire * i . -La classe Complexe doit disposer des constructeurs suivants: Complexe(): constructeur par défaut, Complexe(partieReelle, partieImaginaire),Complexe(Complexe). -Elle doit contenir des accesseurs et mutateurs pour les différents attributs. -additionner au nombre complexe concerné un autre complexe ; on écrira pour cela une méthode d'instance nommée addition qui recevra en paramètre l'autre complexe et qui ne retournera rien. - additionner deux complexes donnés ; on écrira pour cela une méthode statique nommée aussi addition (en utilisant ainsi la possibilité de la surcharge) qui recevra en paramètres les deux nombres complexes à additionner et qui retournera le résultat sous forme d'un objet de type Complexe. -une méthode toString() donnant une représentation d'un nombre complexe (a+b*i). -Ecrivez aussi une classe testComplexe afin de tester la classe Complexe.

package tp2; class Complex {   static float partieReelle ;   static float  partieImaginaire;         public float getPartieReelle() { return partieReelle; } public void setPartieReelle(float partieReelle) { Complex.partieReelle = partieReelle; } public float getPartieImaginaire() { return partieImaginaire; } public void setPartieImaginaire(float partieImaginaire) { Complex.partieImaginaire = partieImaginaire; } Complex(float r, float i) {     partieReelle  = r;      partieImaginaire = i;   } static void additionner(Complex c2) {   partieReelle=partieReelle+Complex.partieReelle;   partieImaginaire=partieImaginaire+Complex. partieImaginaire;   }   static boolean equals(Complex c1, Complex c2) {     return (Math.abs(Complex.partieReelle -Complex.partieReelle ) ==0 &&         Math.abs(Complex. partieImaginaire-Complex.partieReelle )  == 0);   }     static Complex additionner(Complex c

cour et solution sériel 1 pile file et liste

Représentation chainée d’une pile en C : Cpile.h : typedef int Element; typedef struct cellule {Element valeur;                                            struct cellule *suivant;                                          } cellule; typedef cellule *pile; pile vide_pile (); int pile_est_vide (pile p); pile empiler (pile p, Element e); pile depiler (pile p); void afficher (pile p); void menu (); Cpile.cpp : #include <stdio.h> #include <stdlib.h> #include "Cpile.h" int main() {             menu();                  system("pause");                  return 0; } pile vide_pile(){ return NULL;} int pile_est_vide (pile p) {if (p==NULL) return 1;//1vide                                                 else return 0;//0non vide                                                 } pile empiler (pile p, Element e) {cellule *q= (cellule *) malloc (sizeof (cellule));        

Exercice3: Ecrivez un programme Geometrie qui permet à l'utilisateur d'entrer les coordonnées (x, y) des sommets d'un triangle. Le programme affiche ensuite le périmètre du triangle ainsi qu'un message indiquant s'il s'agit d'un triangle isocèle. Votre programme doit être orienté objet.

/**  *  */ package tp2; /**  * @author pirate  *  */ public class Point { float x; float y; public Point(float x, float y) { super(); this.x = x; this.y = y; } public float getX() { return x; } public void setX(float x) { this.x = x; } public float getY() { return y; } public void setY(float y) { this.y = y; } public Point() { this.x=0; this.y=0; } public double distance(Point point1,Point point2){ double n=Math.sqrt(Math.pow(Math.abs(point1.x-point2.x),2)+Math.pow(Math.abs(point1.y-point2.y),2)); return n; } } package tp2; import java.util.Scanner; import tp2.Point; public class triangle {   Point p1,p2,p3; public Point getP1() { return p1; } public void setP1(Point p1) { this.p1 = p1; } public Point getP2() { return p2; } public void setP2(Point p2) { this.p2 = p2; } pu

Exercice2: En mathématiques, le triangle de Pascal, est un arrangement géométrique des coefficients binomiaux dans un triangle. À la ligne i et à la colonne j (0 <= j <= i) est placé le coefficient binomial 2 Le but de ce projet est d'écrire un programme qui demande à l'utilisateur de saisir un entier naturel n, non nul. Puis le programme affiche les n premières lignes du triangle de Pascal.

import java.util.Scanner; class Pascal {     private static Scanner scanner = new Scanner(System.in);     public static void main(String[] args) {         int size;         // On demande la taille         System.out.println("Taille du triangle de Pascal : ");         size = scanner.nextInt();         // Ici on déclare le tableau, mais on ne construit que la première         // dimension         int [][] triangle = new int[size][];         // On construit et initialise la 1ère ligne         triangle[0] = new int[1];         triangle[0][0] = 1;         for (int row = 1; row < size; row++) {             // Chaque ligne du triangle est un tableau à une dimension             // dont la taille est celle de la ligne précédente + 1:             // on construit ces lignes (new) au fur et à mesure que l'on             // progresse dans le tableau             triangle[row] = new int [triangle [row - 1].length + 1];             // Remplissage du tableau: