Vous n'êtes pas identifié(e).
L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT →
Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision | Révision précédente | ||
utilisateurs:hypathie:tutos:java-oriente_objet [29/03/2015 09:12] Hypathie créée |
utilisateurs:hypathie:tutos:java-oriente_objet [29/03/2015 12:45] (Version actuelle) Hypathie [La classe Adresse] |
||
---|---|---|---|
Ligne 498: | Ligne 498: | ||
<code java> | <code java> | ||
+ | |||
public abstract class Individu | public abstract class Individu | ||
Ligne 504: | Ligne 505: | ||
private String m_strPrenom; | private String m_strPrenom; | ||
private Adresse m_adresse = new Adresse(); | private Adresse m_adresse = new Adresse(); | ||
+ | |||
+ | |||
+ | //-------------------------------------- CONSTRUCTEUR PAR DEFAUT ----------------------------------------- | ||
+ | |||
+ | |||
+ | public Individu () | ||
+ | { | ||
+ | this("mon nom est personne", "mon prénom est personne,", new Adresse()); | ||
+ | } | ||
Ligne 532: | Ligne 542: | ||
- | //-------------------------------------- CONSTRUCTEUR PAR DEFAUT ----------------------------------------- | + | //------------------------------------------------------------ |
- | + | ||
- | + | ||
- | public Individu () | + | |
- | { | + | |
- | this("mon nom est personne", "mon prénom est personne,", new Adresse()); | + | |
- | } | + | |
- | + | ||
- | //----------------------------------- ENCAPSULATION DES PROPRIETES DE L'OBJET --------------------------- | + | |
- | + | ||
/** Affecte (si possible) la chaîne donnée à la propriété m_strNom. | /** Affecte (si possible) la chaîne donnée à la propriété m_strNom. | ||
* | * | ||
Ligne 654: | Ligne 655: | ||
* | * | ||
*/ | */ | ||
+ | |||
public void afficher() | public void afficher() | ||
{ | { | ||
System.out.println(this.getPrenom() + " " + this.getNom()); | System.out.println(this.getPrenom() + " " + this.getNom()); | ||
- | System.out.println(this.getAdresse()); | + | //System.out.println(this.getAdresse()); |
+ | m_adresse.affiche(); | ||
} | } | ||
+ | |||
} | } | ||
Ligne 665: | Ligne 669: | ||
===== La classe Adresse ===== | ===== La classe Adresse ===== | ||
+ | <code java> | ||
+ | public class Adresse | ||
+ | { | ||
+ | private int m_numRue; | ||
+ | private String m_strNomRue; | ||
+ | private int m_nCodePost; | ||
+ | private String m_strVille; | ||
+ | |||
+ | //----------------------------------------------------------- | ||
+ | public static final String SEP_ADR = ","; // Séparateur des différents champs d'une adresse de type String | ||
+ | //----------------------------------------------------------- | ||
+ | |||
+ | |||
+ | //------------------------------- CONSTRUCTEUR --------------------------------- | ||
+ | |||
+ | /** | ||
+ | * | ||
+ | * @param strNom | ||
+ | * @param strPrenom | ||
+ | * @param adresse | ||
+ | */ | ||
+ | public Adresse (int numRue, String strNomRue, int nCodePost, String strVille) | ||
+ | { | ||
+ | if(!setNumRue( numRue)) {setNumRue ("pas de nom");}; | ||
+ | if(!setNomRue(strNomRue)) {setNomRue ("pas de prénom");}; | ||
+ | if(!setCP( nCodePost)) {setCP("pas d'adresse");}; | ||
+ | if(!setVille( strVille)) {setVille("pas d'adresse");}; | ||
+ | } | ||
+ | |||
+ | |||
+ | /*------------------------------ CONSTRUCTEUR PAR DEFAUT ------------------------------------------*/ | ||
+ | |||
+ | public Adresse () | ||
+ | { | ||
+ | this(00, "RueInconnue", 99999, "VilleInconnue"); | ||
+ | } | ||
+ | |||
+ | |||
+ | /* ***************************** GETTER LES PROPRIETES ***************************************** */ | ||
+ | |||
+ | /** Récupère la propriété m_numRue. | ||
+ | * | ||
+ | * @return Contenu de m_numRue. | ||
+ | */ | ||
+ | |||
+ | public int getNumRue() | ||
+ | { | ||
+ | return m_numRue; | ||
+ | } | ||
+ | |||
+ | //----------------------------------------------------------- | ||
+ | |||
+ | /** Récupère la propriété m_strNomRue. | ||
+ | * | ||
+ | * @return Contenu de m_strNomRue. | ||
+ | */ | ||
+ | public String getNomRue() | ||
+ | { | ||
+ | return m_strNomRue; | ||
+ | } | ||
+ | |||
+ | //----------------------------------------------------------- | ||
+ | |||
+ | /** Récupère la propriété m_nCodePost. | ||
+ | * | ||
+ | * @return Contenu de m_nCodePost. | ||
+ | */ | ||
+ | public int getCP() | ||
+ | { | ||
+ | return m_nCodePost; | ||
+ | } | ||
+ | |||
+ | //----------------------------------------------------------- | ||
+ | |||
+ | /** Récupère la propriété m_strVille. | ||
+ | * | ||
+ | * @return Contenu de m_strVille. | ||
+ | */ | ||
+ | public String getVille() | ||
+ | { | ||
+ | return m_strVille; | ||
+ | } | ||
+ | |||
+ | |||
+ | // ***************************** SETTER LES PROPRIETES ****************************************** | ||
+ | |||
+ | /** Affecte (si possible) la chaîne donnée à la propriété m_strNomRue. | ||
+ | * | ||
+ | * @param strSaisi : Chaîne à affecter (doit être alphabétique, plus : noombres, espace, tiret, apostrophe). | ||
+ | * @return VRAI si affectation possible. | ||
+ | */ | ||
+ | |||
+ | public boolean setNomRue(String strSaisi) | ||
+ | { | ||
+ | boolean oK = false; | ||
+ | |||
+ | if (OutilsTests.estAlphaPlus(strSaisi)) | ||
+ | { | ||
+ | oK = true; | ||
+ | m_strNomRue = strSaisi.trim(); | ||
+ | } | ||
+ | |||
+ | return oK; | ||
+ | } | ||
+ | //----------------------------------------------------------------------------------------------------- | ||
+ | |||
+ | /** Affecte (si possible) la chaîne donnée à la propriété m_strVille. | ||
+ | * | ||
+ | * @param strSaisi : Chaîne à affecter (doit être alphabétique, plus : espace, tiret, apostrophe, slash). | ||
+ | * @return VRAI si affectation possible. | ||
+ | */ | ||
+ | public boolean setVille(String strSaisi) | ||
+ | { | ||
+ | boolean oK = false; | ||
+ | |||
+ | if (OutilsTests.estAlphaPlus2(strSaisi)) | ||
+ | { | ||
+ | oK = true; | ||
+ | m_strVille = strSaisi.trim(); | ||
+ | } | ||
+ | |||
+ | return oK; | ||
+ | } | ||
+ | //-------------------------------------------------------------------------------------------------- | ||
+ | |||
+ | /** Affecte (si possible) la convertion de la chaîne donnée à la propriété m_numRue. | ||
+ | * | ||
+ | * @param numSaisi : Chaîne à affecter (doit représenter un entier). | ||
+ | * @return VRAI si affectation possible. | ||
+ | */ | ||
+ | private boolean setNumRue(String numSaisi) | ||
+ | { | ||
+ | boolean oK = false; | ||
+ | numSaisi = numSaisi.trim(); | ||
+ | |||
+ | if (OutilsTests.estEntier(numSaisi)) | ||
+ | { | ||
+ | oK = setNumRue(Integer.parseInt(numSaisi)); | ||
+ | |||
+ | } | ||
+ | |||
+ | return oK; | ||
+ | } | ||
+ | |||
+ | //-------------------------------------------------------------------------------------------------- | ||
+ | |||
+ | public boolean setNumRue(int numSaisi) | ||
+ | { | ||
+ | boolean oK = false; | ||
+ | |||
+ | |||
+ | if (numSaisi>0) | ||
+ | { | ||
+ | oK = true; | ||
+ | m_numRue =numSaisi ; | ||
+ | } | ||
+ | |||
+ | return oK; | ||
+ | } | ||
+ | |||
+ | //---------------------------------------------------------------------------------------------------- | ||
+ | |||
+ | /** Affecte (si possible) la convertion de la chaîne donnée à la propriété m_nCodePost. | ||
+ | * | ||
+ | * @param numSaisi : Chaîne à affecter (doit représenter un entier de 5 chiffres). | ||
+ | * @return VRAI si affectation possible. | ||
+ | */ | ||
+ | private boolean setCP(String numSaisi) | ||
+ | { | ||
+ | boolean oK = false; | ||
+ | numSaisi = numSaisi.trim(); | ||
+ | |||
+ | if (OutilsTests.estCP(numSaisi)) | ||
+ | { | ||
+ | oK = true; | ||
+ | m_nCodePost = Integer.parseInt(numSaisi) ; | ||
+ | } | ||
+ | |||
+ | return oK; | ||
+ | } | ||
+ | |||
+ | //---------------------------------------------------------------------------------------------------- | ||
+ | |||
+ | public boolean setCP(int numSaisi) | ||
+ | { | ||
+ | boolean oK = false; | ||
+ | |||
+ | if(numSaisi>0) | ||
+ | { | ||
+ | oK = true; | ||
+ | m_nCodePost = numSaisi; | ||
+ | } | ||
+ | |||
+ | return oK; | ||
+ | } | ||
+ | |||
+ | //----------------------------------------------------------------------------------------------------- | ||
+ | |||
+ | /** Découpe et affecte (si possible) la chaîne donnée aux différentes propriétés de Adresse. | ||
+ | * | ||
+ | * @param strSaisie : Chaîne à traiter/affecter selon la structure : "entier, nom rue, code postal, nom ville". | ||
+ | * @return VRAI si affectation possible. | ||
+ | */ | ||
+ | public boolean setStructAdresse(String strSaisie) | ||
+ | { | ||
+ | boolean oK = false ; // A priori, c'est pas bon. | ||
+ | |||
+ | if (strSaisie != null) { | ||
+ | // la chaîne saisie doit se composer de 4 parties séparées par des SEP_ADR : | ||
+ | String[] strDecoupe = strSaisie.split(SEP_ADR); | ||
+ | if ((strDecoupe.length == 4) && (this.setNumRue(strDecoupe[0])) | ||
+ | && (this.setNomRue(strDecoupe[1])) | ||
+ | && (this.setCP(strDecoupe[2])) | ||
+ | && (this.setVille(strDecoupe[3]))) { | ||
+ | oK = true; | ||
+ | } | ||
+ | |||
+ | |||
+ | } | ||
+ | return oK; | ||
+ | } | ||
+ | |||
+ | |||
+ | //--------------------- remarque sur l'override du string ----------------------------------------- | ||
+ | // Si on ne crée pas d'override, objet.toString() => renvoie le nom de la classe de l'objet | ||
+ | // l'override ci-dessous permet d'afficher les propriétés de l'objet | ||
+ | |||
+ | |||
+ | @Override | ||
+ | public String toString() | ||
+ | { | ||
+ | return Integer.toString(this.getNumRue()) | ||
+ | + SEP_ADR+ this.getNomRue() | ||
+ | + SEP_ADR+ Integer.toString(this.getCP()) | ||
+ | + SEP_ADR+ this.getVille(); | ||
+ | } | ||
+ | |||
+ | |||
+ | |||
+ | //------------------- permet à l'adresse de se lire elle-même ---------------------------------------- | ||
+ | |||
+ | public void lire() | ||
+ | { | ||
+ | // lire le n° de rue : | ||
+ | String saisie; | ||
+ | String invite = "Donnez un numéro de rue : "; | ||
+ | do | ||
+ | { | ||
+ | saisie = Lire.Chaine(invite); | ||
+ | |||
+ | |||
+ | } while (!(this.setNumRue(saisie))); // Arrêt quand la saisie est correcte | ||
+ | |||
+ | |||
+ | // lire la rue : | ||
+ | invite = "Donnez le nom de la rue : "; | ||
+ | do | ||
+ | { | ||
+ | saisie = Lire.Chaine(invite); | ||
+ | |||
+ | |||
+ | } while (!(this.setNomRue(saisie))); // Arrêt quand la saisie est correcte | ||
+ | |||
+ | |||
+ | // lire la ville : | ||
+ | invite = "Donnez la Ville : "; | ||
+ | do | ||
+ | { | ||
+ | saisie = Lire.Chaine(invite); | ||
+ | |||
+ | |||
+ | } while (!(this.setVille(saisie))); // Arrêt quand la saisie est correcte | ||
+ | |||
+ | |||
+ | // lire le code postal : | ||
+ | invite = "Donnez le code postal : "; | ||
+ | do | ||
+ | { | ||
+ | saisie = Lire.Chaine(invite); | ||
+ | |||
+ | |||
+ | } while (!(this.setCP(saisie))); // Arrêt quand la saisie est correcte | ||
+ | } | ||
+ | |||
+ | |||
+ | // permet d'afficher une adresse : | ||
+ | |||
+ | public void affiche() | ||
+ | { | ||
+ | System.out.println(this.toString()); | ||
+ | } | ||
+ | |||
+ | } | ||
+ | |||
+ | </code> | ||
+ | |||
+ | =====Une classe tableau d'objets ===== | ||
+ | |||
+ | <code java> | ||
+ | |||
+ | |||
+ | |||
+ | public class Groupe | ||
+ | { | ||
+ | |||
+ | /*** | ||
+ | * Attribut de la classe groupe MAx,m_nCpt,m_tableauindividu[] | ||
+ | */ | ||
+ | private static final int MAX= 20; | ||
+ | private int m_nCpt=0; | ||
+ | private static int m_nMax; | ||
+ | private Individu m_tableauindividu[]; | ||
+ | |||
+ | |||
+ | /*** | ||
+ | * constructeur par defaut | ||
+ | */ | ||
+ | public Groupe() | ||
+ | { | ||
+ | this(MAX); | ||
+ | setMax(MAX); | ||
+ | |||
+ | } | ||
+ | /*** | ||
+ | * Constructeur d'initialisation | ||
+ | * @param n : c'est le nombre d'individu | ||
+ | */ | ||
+ | |||
+ | public Groupe(int n) | ||
+ | { | ||
+ | if (n>0) | ||
+ | { | ||
+ | |||
+ | m_tableauindividu = new Individu[n]; | ||
+ | setMax(n); | ||
+ | } | ||
+ | else | ||
+ | { | ||
+ | m_tableauindividu = new Individu[MAX]; | ||
+ | setMax(MAX); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | |||
+ | |||
+ | /*** | ||
+ | * fonction get m_nCpt qui retourne le nombre effectif dans le groupe | ||
+ | * @return m_nCpt le retourne le nombre d'individus effectifs | ||
+ | */ | ||
+ | public int getNb() | ||
+ | { | ||
+ | return m_nCpt; | ||
+ | } | ||
+ | |||
+ | |||
+ | /*** | ||
+ | * fonction set du m_nCpt met à jour le nombre effectif d'individus | ||
+ | * @param m_nCpt | ||
+ | */ | ||
+ | private void setM_nCpt(int m_nCpt) | ||
+ | { | ||
+ | this.m_nCpt = m_nCpt; | ||
+ | } | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | /*** | ||
+ | * Fonction de la saisie lire() permet de saisir les donnees de chaque personne | ||
+ | */ | ||
+ | public void lire() | ||
+ | { | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | //int i =0; | ||
+ | int i = getNb(); | ||
+ | if (isfull(i)) | ||
+ | { | ||
+ | |||
+ | } | ||
+ | else | ||
+ | { | ||
+ | |||
+ | do | ||
+ | { | ||
+ | |||
+ | |||
+ | System.out.println("Tapper votre choix"); | ||
+ | System.out.println(); | ||
+ | System.out.println("Client '0' ... Salairé '1' ... Commercial '2' ... Individu '3'"); | ||
+ | char d =Lire.c(); | ||
+ | |||
+ | |||
+ | switch(d) | ||
+ | { | ||
+ | |||
+ | case '0': | ||
+ | |||
+ | |||
+ | System.out.println("Saisie d'un client"); | ||
+ | m_tableauindividu[i] = new Client(); | ||
+ | m_tableauindividu[i].lire(); | ||
+ | |||
+ | break; | ||
+ | |||
+ | case '1': | ||
+ | |||
+ | System.out.println("Saisie d'un salarié"); | ||
+ | m_tableauindividu[i] = new Employé(); | ||
+ | m_tableauindividu[i].lire(); | ||
+ | |||
+ | break; | ||
+ | |||
+ | case '2': | ||
+ | |||
+ | System.out.println("Saisie d'un Commercial"); | ||
+ | m_tableauindividu[i] = new Commercial(); | ||
+ | m_tableauindividu[i].lire(); | ||
+ | |||
+ | |||
+ | break; | ||
+ | |||
+ | case '3': | ||
+ | |||
+ | System.out.println("Saisie d'un individu"); | ||
+ | m_tableauindividu[i] = new Personne(); | ||
+ | m_tableauindividu[i].lire(); | ||
+ | |||
+ | |||
+ | break; | ||
+ | |||
+ | } | ||
+ | |||
+ | i = i + 1; | ||
+ | |||
+ | |||
+ | |||
+ | }while(!isfull(i) && Lire.Question("Voulez enregistrer d'autres informations ? [o/n] : ")); | ||
+ | |||
+ | this.setM_nCpt(i); | ||
+ | |||
+ | } | ||
+ | } | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | /*** | ||
+ | * fonction afficher() qui permet d'afficher chaque personne du groupe | ||
+ | */ | ||
+ | public void afficher() | ||
+ | { | ||
+ | |||
+ | |||
+ | int i =0; | ||
+ | |||
+ | if(getNb()==0) | ||
+ | { | ||
+ | |||
+ | System.out.println("le tableau est vide"); | ||
+ | } | ||
+ | else | ||
+ | { | ||
+ | do | ||
+ | { | ||
+ | System.out.println("Individu N° " + i + " : "); | ||
+ | System.out.println(); | ||
+ | m_tableauindividu[i].afficher(); | ||
+ | System.out.println(); | ||
+ | i = i+1; | ||
+ | | ||
+ | }while(i < getNb()); | ||
+ | System.out.println(); | ||
+ | System.out.println("Nous avons " + getNb()+ " personne(s) de rentrée(s)"); | ||
+ | } | ||
+ | |||
+ | |||
+ | |||
+ | } | ||
+ | |||
+ | |||
+ | |||
+ | /*** | ||
+ | * | ||
+ | * @return max | ||
+ | */ | ||
+ | |||
+ | public int getMax() | ||
+ | { | ||
+ | return m_nMax; | ||
+ | } | ||
+ | |||
+ | |||
+ | |||
+ | /*** | ||
+ | * renvoie une reference sur l'individu dans la case visée | ||
+ | * @param i | ||
+ | * @return | ||
+ | */ | ||
+ | public Individu individuAt(int i) | ||
+ | { | ||
+ | if( i < 0 && i > getNb()) | ||
+ | { | ||
+ | return null; | ||
+ | } | ||
+ | else { | ||
+ | |||
+ | return m_tableauindividu[i]; | ||
+ | } | ||
+ | |||
+ | |||
+ | } | ||
+ | /*** | ||
+ | * permet de voir si le groupe est rempli | ||
+ | * @param i | ||
+ | * @return | ||
+ | */ | ||
+ | public boolean isfull(int i) | ||
+ | { | ||
+ | |||
+ | if (i==getMax()) | ||
+ | { | ||
+ | System.out.println("le tableau est plein"); | ||
+ | return true; | ||
+ | } | ||
+ | else | ||
+ | { | ||
+ | return false; | ||
+ | } | ||
+ | } | ||
+ | |||
+ | private void setMax(int m_nMax) | ||
+ | { | ||
+ | Groupe.m_nMax = m_nMax; | ||
+ | } | ||
+ | |||
+ | |||
+ | } | ||
+ | </code> | ||
+ | |||
+ | =====Des classes héritiaires "d'Individu" ===== | ||
+ | |||
+ | ====Personne : une classe héritaire d'individu ==== | ||
+ | |||
+ | <code java> | ||
+ | |||
+ | public class Personne extends Individu | ||
+ | { | ||
+ | |||
+ | public Personne() | ||
+ | { | ||
+ | |||
+ | } | ||
+ | |||
+ | public Personne(String nom, String prenom, Adresse adresse) | ||
+ | { | ||
+ | super(nom, prenom, adresse); | ||
+ | |||
+ | } | ||
+ | |||
+ | |||
+ | } | ||
+ | |||
+ | </code> | ||
+ | |||
+ | |||
+ | ====Salarié: une classe abstraite et héritiaire d'individu ==== | ||
+ | <code java> | ||
+ | |||
+ | abstract class Salarié extends Individu | ||
+ | { | ||
+ | private final float SALAIREDEFAUT =2000; | ||
+ | private float m_salaire; | ||
+ | private int m_statut; | ||
+ | |||
+ | |||
+ | /*** | ||
+ | * Constructeur par defaut | ||
+ | */ | ||
+ | public Salarié() | ||
+ | { | ||
+ | this.setSalaire(SALAIREDEFAUT); | ||
+ | this.setStatut("1"); | ||
+ | } | ||
+ | |||
+ | |||
+ | /*** | ||
+ | * Constructeur d'initialisation | ||
+ | * @param nom | ||
+ | * @param prenom | ||
+ | * @param adresse | ||
+ | * @param salaire | ||
+ | * @param statut | ||
+ | */ | ||
+ | public Salarié(String nom,String prenom,Adresse adresse,float salaire,int statut) | ||
+ | { | ||
+ | super( nom, prenom, adresse); | ||
+ | if(!setSalaire(salaire))this.setSalaire(SALAIREDEFAUT); | ||
+ | if(!setStatut(statut))this.setStatut("1"); | ||
+ | |||
+ | |||
+ | } | ||
+ | |||
+ | |||
+ | |||
+ | @Override | ||
+ | public String toString() | ||
+ | { | ||
+ | |||
+ | return super.toString()+ " votre salaire est de : "+ getSalaire()+ " votre satatut est : "+ getStatut(); | ||
+ | } | ||
+ | |||
+ | |||
+ | /*** | ||
+ | * cette methode recupere le salaire | ||
+ | * @return le salsaire | ||
+ | */ | ||
+ | public float getSalaire() | ||
+ | { | ||
+ | |||
+ | return m_salaire; | ||
+ | } | ||
+ | |||
+ | |||
+ | /*** | ||
+ | * cette methode met a jour le salaire l'entree est en float | ||
+ | * @param m_salaire | ||
+ | * @return retourne ok | ||
+ | */ | ||
+ | public boolean setSalaire(float m_salaire) | ||
+ | { | ||
+ | |||
+ | boolean ok = false; | ||
+ | |||
+ | if(m_salaire>0.0) | ||
+ | { | ||
+ | |||
+ | this.m_salaire = (m_salaire); | ||
+ | ok =true; | ||
+ | |||
+ | } | ||
+ | else | ||
+ | { | ||
+ | ok=false; | ||
+ | } | ||
+ | |||
+ | return ok; | ||
+ | } | ||
+ | |||
+ | /*** | ||
+ | * cette methode (polymorphe) de la methode setSalaire (float)met à jour le salaire l'entree en string | ||
+ | * @param m_salaire | ||
+ | * @return ok | ||
+ | */ | ||
+ | private boolean setSalaire(String m_salaire) | ||
+ | { | ||
+ | |||
+ | boolean ok = false; | ||
+ | |||
+ | if(BoiteAOutil.isFloat(m_salaire)) | ||
+ | { | ||
+ | |||
+ | |||
+ | ok=setSalaire(Float.parseFloat(m_salaire)); | ||
+ | |||
+ | } | ||
+ | else | ||
+ | { | ||
+ | ok=false; | ||
+ | } | ||
+ | |||
+ | return ok; | ||
+ | } | ||
+ | |||
+ | |||
+ | /*** | ||
+ | * cette methode recupere le stat | ||
+ | * @return le statut | ||
+ | */ | ||
+ | public int getStatut() | ||
+ | { | ||
+ | return m_statut; | ||
+ | } | ||
+ | |||
+ | |||
+ | |||
+ | /*** | ||
+ | * cette methode met à jour le stat | ||
+ | * @param m_statut | ||
+ | * @return bollean ok | ||
+ | */ | ||
+ | public boolean setStatut(int m_statut) | ||
+ | { | ||
+ | boolean ok = false; | ||
+ | |||
+ | if(m_statut> 0) | ||
+ | { | ||
+ | this.m_statut = (m_statut); | ||
+ | ok =true; | ||
+ | } | ||
+ | else { | ||
+ | ok=false; | ||
+ | } | ||
+ | |||
+ | return ok; | ||
+ | |||
+ | } | ||
+ | |||
+ | |||
+ | |||
+ | /*** | ||
+ | * cette methode (polymorphe) de la methode setstat (float)met à jour le statut l'entree en string | ||
+ | * @param m_statut | ||
+ | * @return boolean ok | ||
+ | */ | ||
+ | |||
+ | private boolean setStatut(String m_statut) | ||
+ | { | ||
+ | boolean ok = false; | ||
+ | |||
+ | if(BoiteAOutil.isInteger(m_statut)) | ||
+ | { | ||
+ | |||
+ | ok = setStatut(Integer.parseInt(m_statut)); | ||
+ | } | ||
+ | else | ||
+ | { | ||
+ | ok=false; | ||
+ | } | ||
+ | |||
+ | return ok; | ||
+ | |||
+ | } | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | /*** | ||
+ | * Methode lire qui permet de récuperer les donnees saisie par l'opérateur | ||
+ | */ | ||
+ | |||
+ | @Override | ||
+ | public void lire() | ||
+ | { | ||
+ | super.lire(); | ||
+ | boolean oksalaire = false; | ||
+ | boolean okstatut = false; | ||
+ | System.out.println(); | ||
+ | |||
+ | while (!oksalaire) | ||
+ | { | ||
+ | System.out.println("Combien gagnez-vous? "); | ||
+ | oksalaire = this.setSalaire(Lire.S()); | ||
+ | } | ||
+ | System.out.println(); | ||
+ | |||
+ | while (!okstatut) | ||
+ | { | ||
+ | System.out.println("Quel est votre statut? "); | ||
+ | |||
+ | okstatut= this.setStatut(Lire.S()); | ||
+ | |||
+ | } | ||
+ | } | ||
+ | |||
+ | } | ||
+ | |||
+ | </code> | ||
+ | |||
+ | ==== Employé : une classe dérivée de Salarié ==== | ||
+ | |||
+ | <code java> | ||
+ | |||
+ | public class Employé extends Salarié | ||
+ | { | ||
+ | public Employé() | ||
+ | { | ||
+ | |||
+ | |||
+ | } | ||
+ | |||
+ | public Employé(String nom, String prenom, Adresse adresse, float salaire, int statut) | ||
+ | { | ||
+ | super(nom, prenom, adresse, salaire, statut); | ||
+ | |||
+ | } | ||
+ | |||
+ | } | ||
+ | |||
+ | </code> | ||
+ | |||
+ | ====Commercial: Une classe dérivée de Salarié ==== | ||
+ | |||
+ | <code java> | ||
+ | |||
+ | public class Commercial extends Salarié | ||
+ | { | ||
+ | private float m_chiffreaffaire; | ||
+ | private float m_ratio; | ||
+ | private final float CADEFAUT=0; | ||
+ | private final float RATIO=0.1f; // f : pour lui dire qu'il s'agit d'un float ; pareil que convertTo float sur un double | ||
+ | |||
+ | /*** | ||
+ | * constructeur par defaut | ||
+ | */ | ||
+ | public Commercial() | ||
+ | { | ||
+ | this.setChiffreAffaire(CADEFAUT); | ||
+ | this.setRatio(RATIO); | ||
+ | |||
+ | } | ||
+ | |||
+ | /*** | ||
+ | * constructeur d'initialisation | ||
+ | * @param nom | ||
+ | * @param prenom | ||
+ | * @param adresse | ||
+ | * @param salaire | ||
+ | * @param statut | ||
+ | * @param chiffreaffaire | ||
+ | * @param ratio | ||
+ | */ | ||
+ | public Commercial(String nom,String prenom,Adresse adresse,float salaire,int statut,float chiffreaffaire,float ratio) | ||
+ | { | ||
+ | super(nom, prenom, adresse, salaire, statut); | ||
+ | if(!setChiffreAffaire(chiffreaffaire))this.setChiffreAffaire(CADEFAUT); | ||
+ | if(!setRatio(ratio))this.setRatio(RATIO); | ||
+ | |||
+ | } | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | /*** | ||
+ | * methode getsalaire du commercial qui en plus rajoutte le chiffre d affaire et le ratio | ||
+ | */ | ||
+ | @Override | ||
+ | public float getSalaire() | ||
+ | { | ||
+ | |||
+ | return super.getSalaire()+getChiffreAffaire()*getRatio(); | ||
+ | |||
+ | } | ||
+ | |||
+ | /*** | ||
+ | * cette methode recupere le chiffre d affaire | ||
+ | * @return chiffreaffaire | ||
+ | */ | ||
+ | |||
+ | private float getChiffreAffaire() | ||
+ | { | ||
+ | return m_chiffreaffaire; | ||
+ | } | ||
+ | /*** | ||
+ | * cette methode met à jour le ca l'entree est en float | ||
+ | * @param m_chiffreaffaire | ||
+ | * @return ok | ||
+ | */ | ||
+ | private boolean setChiffreAffaire(float m_chiffreaffaire) | ||
+ | { | ||
+ | |||
+ | boolean ok = false; | ||
+ | |||
+ | if(m_chiffreaffaire>0.0) | ||
+ | { | ||
+ | |||
+ | this.m_chiffreaffaire = (m_chiffreaffaire); | ||
+ | ok =true; | ||
+ | |||
+ | } | ||
+ | else | ||
+ | { | ||
+ | ok=false; | ||
+ | } | ||
+ | |||
+ | return ok; | ||
+ | |||
+ | } | ||
+ | /*** | ||
+ | * cette methode (polymorphe) de la methode setChiffreAffaire (float)met à jour le ca l'entree en string | ||
+ | * @param m_chiffreaffaire | ||
+ | * @return | ||
+ | */ | ||
+ | private boolean setChiffreAffaire(String m_chiffreaffaire) | ||
+ | { | ||
+ | |||
+ | boolean ok = false; | ||
+ | |||
+ | if(BoiteAOutil.isFloat(m_chiffreaffaire)) | ||
+ | { | ||
+ | |||
+ | |||
+ | ok=setChiffreAffaire(Float.parseFloat(m_chiffreaffaire)); | ||
+ | |||
+ | } | ||
+ | else | ||
+ | { | ||
+ | ok=false; | ||
+ | } | ||
+ | |||
+ | return ok; | ||
+ | } | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | /*** | ||
+ | * cette methode récupère le ratio | ||
+ | * @return ratio | ||
+ | */ | ||
+ | private float getRatio() | ||
+ | { | ||
+ | return m_ratio; | ||
+ | } | ||
+ | |||
+ | /*** | ||
+ | * cette methode met a jour le ratio l'entree est en float | ||
+ | * @param m_ratio | ||
+ | * @return ok | ||
+ | */ | ||
+ | |||
+ | private boolean setRatio(float ratio) | ||
+ | { | ||
+ | boolean ok = false; | ||
+ | |||
+ | if(ratio>=0.02f && ratio <=0.1f) | ||
+ | { | ||
+ | |||
+ | this.m_ratio = (ratio); | ||
+ | ok =true; | ||
+ | |||
+ | } | ||
+ | else | ||
+ | { | ||
+ | ok=false; | ||
+ | } | ||
+ | |||
+ | return ok; | ||
+ | |||
+ | |||
+ | } | ||
+ | private boolean setRatio(String m_ratio) | ||
+ | { | ||
+ | boolean ok = false; | ||
+ | |||
+ | if(BoiteAOutil.isFloat(m_ratio)) | ||
+ | { | ||
+ | |||
+ | |||
+ | ok=setRatio(Float.parseFloat(m_ratio)); | ||
+ | |||
+ | } | ||
+ | else | ||
+ | { | ||
+ | ok=false; | ||
+ | } | ||
+ | |||
+ | return ok; | ||
+ | } | ||
+ | |||
+ | |||
+ | |||
+ | /*** | ||
+ | * methode to string de la classe commercial | ||
+ | */ | ||
+ | @Override | ||
+ | public String toString() | ||
+ | { | ||
+ | return super.toString()+ " votre chiffre d'affaire est de : " + getChiffreAffaire()+ " votre ratio est de : " + getRatio(); | ||
+ | } | ||
+ | /*** | ||
+ | * methode lire de la classe commercial | ||
+ | */ | ||
+ | @Override | ||
+ | public void lire() | ||
+ | { | ||
+ | super.lire(); | ||
+ | boolean okchiffreaffaire = false; | ||
+ | boolean okratio = false; | ||
+ | System.out.println(); | ||
+ | |||
+ | while (!okchiffreaffaire) | ||
+ | { | ||
+ | System.out.println("Quel est votre chiffre d'affaire? "); | ||
+ | okchiffreaffaire = this.setChiffreAffaire(Lire.S()); | ||
+ | } | ||
+ | System.out.println(); | ||
+ | |||
+ | while (!okratio) | ||
+ | { | ||
+ | System.out.println("Quel est votre ratio? "); | ||
+ | |||
+ | okratio= this.setRatio(Lire.S()); | ||
+ | |||
+ | } | ||
+ | } | ||
+ | |||
+ | |||
+ | |||
+ | } | ||
+ | |||
+ | </code> | ||
+ | |||
+ | =====Programme de test ===== | ||
+ | |||
+ | <code java> | ||
+ | |||
+ | public class Program { | ||
+ | |||
+ | public static void main(String[] args) | ||
+ | { | ||
+ | Groupe monGroupe = new Groupe(); // Groupe des individus saisis | ||
+ | |||
+ | // Affichage du nom et de la version du programme | ||
+ | System.out.println("**** Saisie et affichage d'un tableau (groupe) d'individus (V1.0, 25/03/2015) ****" ); | ||
+ | System.out.println(""); | ||
+ | |||
+ | |||
+ | // Acquisition + affichage d'un certain nombre d'individus : | ||
+ | | ||
+ | do | ||
+ | { | ||
+ | System.out.println("--- Saisie d'au plus "+ monGroupe.getMax() +" personnes ---" ); | ||
+ | System.out.println(""); | ||
+ | |||
+ | // Acquisition d'un certain nombre d'individus : | ||
+ | int i = 0; // indice de parcours du tableau d'individus | ||
+ | do | ||
+ | { | ||
+ | monGroupe.lire(); | ||
+ | i = i + 1; | ||
+ | } | ||
+ | while (Lire.Question("Voulez-vous saisir un autre individu ?") // Arrêt quand "non" | ||
+ | && (i < monGroupe.getMax())) ; // ou si tableau plein | ||
+ | |||
+ | // Affichage des individus saisis : | ||
+ | System.out.println(""); | ||
+ | monGroupe.afficher(); | ||
+ | |||
+ | |||
+ | } while (Lire.Question("Voulez-vous saisir un autre groupe d'individus ?") ) ; // Arrêt quand "non" | ||
+ | |||
+ | |||
+ | } | ||
+ | |||
+ | } | ||
+ | |||
+ | </code> |