tp rétro-conception à partir d`une application java - e-campus

publicité
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
Téléchargement