Refactorez la classe Client
📢 Description du problème
Refactorez la classe Client
, pour faire la distinction entre les particuliers et les entreprises. Un particulier possède un compte particulier et une adresse privée. Une entreprise possède un compte entreprise et une adresse entreprise.
👮 Tests à réaliser
-
Vérfier qu'une adresse privée ne peut être associée qu'à un compte client entreprise -
Vérifier qu'une adresse d'entreprise ne peut être associée qu'à un compte client particulier
✔ Solutions
- Rendre la classe
Client
abstraite. - Retirer la méthode
setRole()
de la classeClient
(non utile après refactoring) - Créer une Classe
PrivateClient
qui hérite deClient
. - S'assurer que la classe
PrivateClient
n'accepte que des adresses de typePrivateAdress
. On créera une classe d'exception personnaliséInvalidClientAddressException
. - Crééer une Classe
CompanyClient
qui hérite deClient
. - Ajouter une méthode
setAddress(Address address)
dans la classeClient
pour gérer les préconditions. - S'assurer que la classe
CompanyClient
n'accepte que des adresses de typeCompanyAdress
- Remplacer toutes les instances de
Client
déjà présent dans le code parPrivateAdress
ouCompanyAdress
. - Modifier le constructeur de la classe
Account
pour assurer la cohérence entre type de client et type de compte.