
Programmation Orientée Objets
Premières Classes
Recommandations :
- Faire le TP par étapes en testant à chaque fois votre programme
- Faire un diagramme des classes UML avant l'implémentation en Java
- Appliquer les convention de syntaxe de Java
- Ouvrir, toujours quand vous programmez en Java, un onglet avec la documentation : http://download.oracle.com/javase/1.5.0/docs/api/
Premier programme java
Définir un "projet", définir un "package" (dans le projet) puis écrire une classe de TestUn avec la méthode main vous permettant d'afficher "Salut tous !!".
Vérifiez la présence des fichier .java et .class dans votre espace disque.Classe CompteEnBanque
-
Dessiner un diagramme de classe UML d'une classe "CompteEnBanque"
comportant :
- deux attributs 'numero' et 'solde' (représentés par des entiers) et
- cinq méthodes 'deposer(int)', 'retirer(int)', 'getSolde( )', 'getNumero( )' et 'toString( )'.
-
En supposant l'existence de la classe "CompteEnBanque",
modifier la méthode 'main' de la classe TestUn (première question) pour :
- Créer deux instances de CompteEnBanque, une avec un numero (de compte) et sans solde (par défaut zéro), l'autre avec un numero et un solde (entier positif). Utilisez des constantes pour les numéros et soldes.
- Afficher le numéro et le solde de chaque compte (en appelant toString( ))
- Faire des retraits et des dépôts dans les deux comptes
- Afficher à nouveau le numéro et le de solde chaque compte
- Ecrire la classe CompteEnBanque et tester le programmme.
-
Modifier la méthode 'main' pour, au lieu d'utiliser de constantes, lire depuis le clavier
les numeros de compte et les soldes.
La classe Keyboard vous permet d'effectuer des lectures simples. Vous trouverez une description de Keyborad ici et les sources java ici.
Pour utiliser Keyboard avec Eclipse vous devez faire le suivant :- télécharger le fichier Keyboard.jar, puis
- dans « propriétés » de votre projet, choisissez « Java Build Path », « Librairies », « Add External JARs » et indiquez le chemin du fichier « Keyboard.jar ».
-
Dessiner un diagramme de classe UML d'une classe "CompteEnBanque"
comportant :
Classe Personne
-
Dessiner un diagramme de classe UML d'une classe "Personne" sachant que l'on souhaite
avoir autant d'informations que dans la phrase suivante :
"M. Dupont Jean est né en 1965, il est célibataire."
Une Personne sera alors représentée par son nom, son prénom, son année de naissance et son état civil (utilisez un booléen estCelibataire).
La classe Personne contiendra, entre autres, une méthode "toString( )" qui retourne une chaîne de caractères similaire à la phrase donnée précédemment. - Ecrire une nouvelle classe de TestDeux avec une méthode main vous permettant de créer deux instances de Personne et d'afficher leurs informations respectives.
- Ecrire et tester la classe "Personne"
-
Ajouter à Personne une méthode age( ) qui renvoie l’âge de l'individu en fonction de l'année courante
(il s'agit en faite d'une approximation de l'âge car on ne tiendra pas en compte le jour et le mois de naissance).
Pour calculer l'année courante vous devez écrire :import java.util.* ; // importer le package . . . GregorianCalendar aujourDHui = new GregorianCalendar ( ) ; int anneeCourante = aujourDHui.get(Calendar.YEAR ) ;
-
Modifier la méthode main pour afficher la personne la plus âgée parmi les deux.
Faire ce calcul de deux manières :- D'abord en appelant directement les méthodes age( )
- Puis à travers une méthode estPlusAge(Personne) qui vérifie si la personne courrante est "plus âgé" que la personne passé en paramètre. Vous devez définir cette méthode dans la classe Personne. Il s'agit d'une approximation car on représente seulement l'année de naisance.
-
Dessiner un diagramme de classe UML d'une classe "Personne" sachant que l'on souhaite
avoir autant d'informations que dans la phrase suivante :
Extension 1. Classe Personne
Modifier votre diagramme de classe UML pour qu'une personne puisse éventuellement avoir un CompteEnBanque.
Modifier la classe Personne dans ce sens. Tester l'extension.
Extension 2. Classe Personne
Modifier votre diagramme de classe UML pour qu'une Personne puisse éventuellement avoir un conjoint.
Modifier votre classe Personne dans ce sens. Tester l'extension.
Attention: la relation "conjoint" est symétrique.
Ajouter une méthode marier(Personne p) qui permet de marier une personne à une autre.
Modifier la méthode toString( ) pour obtenir le nom du conjoint. On obtiendra par exemple :
"Dupont née Martin Sylvie est née en 1968, elle est mariée".
Si Mlle Martin se marie avec M. Dupond, son nom restera inchangé, mais on affichera "Mme Dupond née Martin".
Ajouter également une méthode separer( ) qui permet de séparer une personne de son conjoint (attention on separe un couple, deux personnes).
Tester cette extension en creant (dans main) un couple marié puis séparé.Extension 3. Classe Personne
On veut maintenant être en mesure de déterminer l'ancêtre d'une personne donnée. Pour cela on ajoute les attributs pere et mere à chaque personne.
Ecrire le code du constructeur permettant de créer un objet de type personne en lui passant son père et sa mère lors de l'initialisation.
Si le père (mère) est inconnu (e), alors l'attribut aura null comme valeur.Supposons que l'on veuille créer l'ensemble de personnes suivant :
Mr Dupond Jean , de père INCONNU et de mère INCONNU
Mlle Durant Emilie, épouse de Dupond Jean, de père INCONNU et de mère INCONNU
Mr Dupond Eric , de père Dupond Jean et de mère Durant Emilie
Mlle Holly Jeanne, épouse de Dupont Eric, de père INCONNU et de mère INCONNU
Mlle France Sylvie, de père INCONNU et de mère INCONNU
Mr Dupond Yannick, de père Dupond Eric et de mère Holly Jeanne
Mlle France Brigitte, de père INCONNU et de mère France Sylvie
Mr Dupond Henri, de père Dupond Yannick et de mère France BrigitteEcrire, dans main, les appels nécessaires pour une telle initialisation.
Extension 4 (pour aller plus loin). Classe Personne
Ecrire le code de la méthode boolean estAncetre(Personne p) qui retourne vrai si la personne courante est ancêtre de la personne p.
Remarque: Pour simplifier les choses dans un premier temps vous considérerez seulement la ligne paternelle. Dans un deuxième temps vous devez considérez la branche paternelle et de la branche maternelle à chaque génération.
Tester la méthode.
Pour terminer, écrire la méthode String arbreGene( ) de la classe Personne qui retourne l'arbre généalogique d'une personne.
Lors de l'affichage on obtiendra par exemple :
Mr Dupond Henri, de père Dupond Yannick de père Dupond Eric époux de Holly Jeanne de père Dupond Jean épouse de Durant Emilie de mère Durant Emilie époux de Dupond Jean de mère Holly Jeanne épouse de Dupont Eric de mère France Brigitte de mère France Sylvie