tp rétro-conception à partir d`une application java - e
Transcription
tp rétro-conception à partir d`une application java - e
Module 1 du D.U IUT Vélizy TP RÉTRO-CONCEPTION À PARTIR D'UNE APPLICATION JAVA Base de données et JAVA FC-UVSQ SUJET1 Télécharger le fichier retroconception.jar à partir de la plateforme E-CAMPUS (espace DU-M1). Puis importer l'archive dans un nouveau projet JAVA sous Eclipse. Éditer sous Eclipse toutes les classes et lire le code source JAVA en compréhension. Travail 1. Réaliser avec ArgoUML le diagramme de classe correspondant à l'application JAVA. 2. Modifier le diagramme de classe afin qu'il respecte la règle de gestion suivante : Un client est titulaire d'un ou plusieurs comptes bancaires Un compte bancaire appartient à un client. 3. Modifier dans Eclipse le code source JAVA des classes impactées par cette modification. 4. Modifier le diagramme de classe afin qu'il respecte la règle de gestion suivante : Les opérations de crédit et de débit sur un compte bancaire rémunéré doivent être mémorisées dans un historique des mouvements afin que les intérêts puissent être correctement calculés. Un compte rémunéré connait ses mouvements mais pas l'inverse. 5. Un mouvement doit garder trace de la date, du type et du montant de l'opération. Modifier la structure de données de la classe Mouvement dans le diagramme de classe pour tenir compte de ces contraintes. Puis en conséquence, compléter le code source JAVA de cette classe dans Eclipse. JJLC 1/4 2013-2014 SUJET2 Il s'agit de compléter les méthodes implicites et constructeurs des classes Client, CompteBancaire, CompteCourant, CompteRemunere et Mouvement. Quand un nouveau compte bancaire est créé sa date d'ouverture est égale à la date système du moment. Travail 1. Ajouter les constructeurs qui initialisent les objets des classes citées ci-dessus. Ne pas initialiser les collections (listes). 2. Est-il possible d'instancier un objet CompteBancaire ? 3. Ajouter les méthodes qui permettent d'ajouter des objets dans les collections. SUJET3 Il s'agit de compléter les méthodes métier et techniques des classes GerantDeCompte, CompteCourant et CompteRemunere. Lorsqu'un compte rémunéré est créditer1 ou débiter2, un objet mouvement est créé avec le type de l'opération (« C » ou « D »), le montant de l'opération et sa date (date système du moment). Lorsqu'un compte est clôturé la date clôture passe de null à la date système du moment. Travail 1. Quelle est la nature particulière des méthodes créditer et débiter ? 2. Est-ce qu'un objet qui invoque l'une de ces deux méthodes doit se soucier du type du compte (courant ou rémunéré) ? 3. Implémenter la méthode créditer de la classe CompteCourant. 4. Implémenter la méthode créditer de la classe CompteRemunere. 5. Implémenter la méthode débiter de la classe CompteCourant. 6. Implémenter la méthode débiter de la classe CompteRemunere. 7. Implémenter la méthode créditer de la classe GerantDeCompte. 8. Implémenter la méthode débiter de la classe GerantDeCompte. 1 2 Un crédit : nouveau solde = ancien solde + montant crédit Un débit : nouveau solde = ancien solde – montant débit JJLC 2/4 2013-2014 ANNEXES Pour importer l'application retroconception.jar dans un projet Eclipse : 1. 2. 3. 4. Démarrer Eclipse Créer un nouveau projet JAVA (File, New, Java Project) Clic droit sur le répertoire src puis import, General, Archive File. Double clic gauche sur le nom de chaque classe des paquetages modele et outils pour les éditer dans l'éditeur d'Eclipse. Les constructeurs des classes dérivées (sous-classes) qui initialisent tout ou partie des objets doivent respecter la règle suivante : Soit la classe mère (sur-classe) : public abstract class Personne { private String nom ; private String prenom ; private Adresse adresse ; public Personne() { super() ; } // invocation du constructeur d'Object car implictement Personne extends Objet public Personne(String nom, Strin prenom, Adresse adresse) { super() ; this.nom = nom ; this.prenom = prenom ; this.adresse = adresse ; } // get&set } Et la classe fille (sous-classe) : public class Etudiant extends Personne { private int matricule ; private String formation ; public Etudiant() { super() ; } // invocation du constructeur sans argument (public Personne()) de Personne. public Etudiant(String nom, String prenom, Adresse adresse, int matricule, String formation) { super (nom, prenom, adresse) ; // invocation du constructeur avec arguments de la partie // Personne d'un Etudiant this.matricule = matricule ; this.formation = formation ; } // get&set } JJLC 3/4 2013-2014 Représentation ensembliste d'un objet étudiant : objet étudiant matricule formation partie personne de l'objet étudiant nom prenom adresse voie codepostal ville objet adresse public Personne(String nom, Strin prenom, Adresse adresse) construit la partie personne de l'étudiant. public Etudiant(String nom, String prenom, Adresse adresse, int matricule, String formation) construit la partie personne de l'étudiant en appelant par super (nom, prenom, adresse) le constructeur du dessus et en initialisant ses données matricule et formation par : this.matricule = matricule ; et this.formation = formation ; JJLC 4/4 2013-2014