1. La modélisation implique la création d’une classe Personne. Les attributs de la classe sont le nom, le prénom, le sexe et l’âge. Dans l’approche objet, tout est objet ou classe. Sauf exceptions, les types des attributs sont aussi des classes. Même si les types des attributs ne sont pas précisés, définissez le nom et le prénom comme une chaîne de caractères (classe String). Partez du principe que le sexe peut avoir deux valeurs (‘M’ ou ‘F’) et que la date de naissance peut être de type Date (classe Date). Cela impose évidemment l’existence des classes String et Date, sinon il faut les créer. Tous ces attributs sont privés. Il faut donc les faire précéder du modificateur d’accès private ou –. Les services offerts par cette classe sont le calcul de l’âge, la possibilité de voir le nom et le prénom d’une personne ainsi que le calcul des charges et du revenu. À cette étape, vous n’avez pas suffisamment d’informations pour déduire les opérations permettant le calcul des charges et du revenu ; elles resteront donc dans le compartiment de responsabilités de la classe. Elles seront, par la suite, réalisées par l’ajout d’un ensemble d’opérations et/ou d’attributs.
Dans la solution proposée, la modélisation de l’âge est représentée par un attribut date- Naissance et une méthode calculAge(). Une autre solution possible est de représenter l’âge par un attribut et de laisser au programmeur le choix d’un modèle d’implémentation. Dans ce cas, ajoutez l’attribut dérivé /age ; sa valeur sera alors calculée à par tir d’une méthode
2. Au vu de ces nouvelles informations, les responsabilités de la classe se transforment en propriétés de la manière suivante :
• Le calcul du revenu est représenté par les attributs salaire et autreRevenu, avec éventuelle- ment deux méthodes permettant la mise à jour de leurs valeurs.
• Le calcul des charges est représenté par deux attributs de classe, chargeSalaire et autre- Charge, et par une méthode de calcul des charges (puisque celle-ci est bien détaillée dans l’énoncé).
Le calcul des charges est invalidé en cas de décès de la personne. De ce fait, ajoutez un compartiment d’exceptions pour prévoir le traitement ultérieur de cette exception.
3. Pour créer un objet de la classe Personne, il faut par exemple disposer d’un nom et d’une date de naissance. Mais il est éventuellement possible de créer un objet personne en disposant d’autres informations. Au lieu d’ajouter le constructeur indiqué seul, ajoutez le stéréotype constructor, qui permet à la fois d’organiser des opérations en groupes et d’indiquer qu’il est possible d’ajouter d’autres constructeurs.
Les opérations assurant le changement des valeurs des attributs peuvent également être regroupées sous le stéréotype update. L’énoncé indique que le calcul des charges ne s’applique plus si la personne est décédée. Il s’agit, dans ce cas, d’une exception qui doit être ajoutée dans le compartiment dédié afin qu’elle soit traitée lorsque les informations suffisantes seront disponibles.