## Exercices - Les méthodes et visibilité
Rappels :
Une **méthode** en Java est un **bloc de code** qui effectue une tâche spécifique.
Elle est définie au sein d'une **classe** et peut être appelée pour exécuter une action sur **des attributs** : des données contenues dans des objets de cette classe.
Les méthodes sont utilisées pour **organiser** et **structurer** le programme en unités fonctionnelles, rendant ainsi le code plus **modulaire** et **réutilisable**.
### Exercices
Réalisez les exercices suivants (vous ne pouvez **PAS** utiliser les **boucles**,
les **conditions** ou toute autre **possibilité algorithmique** de java).
Vous pouvez utiliser les **variables**, les **attributs** et les **méthodes** et tout ce qui peut s’y associer).
### 1 - Addition
Dans une classe `Addition`, crée une méthode
```java
int calculerSomme(int a, int b)
```
La méthode doit simplement **additionner** les deux paramètres passés arguments de
la méthode et **retourner le résultat**.
### 2 - Personne (visibilité)
Crée une classe `Personne` avec les méthodes suivantes :
- `afficherNom()` qui **affiche le nom** de la personne.
Cette méthode doit être **publique**.
- `changerNom(String nom)` qui permet de **changer le nom** de la personne.
Cette méthode doit être **privée**.
- `afficherAge()` qui **affiche l'âge** de la personne.
Cette méthode doit être **protégée**.
- `afficherAdresse()` qui **affiche l'adresse** de la personne.
Cette méthode doit avoir aucun modificateur (c'est-à-dire **visibilité package**).
```mermaid
classDiagram
class Personne {
+ afficherNom() String
- changerNom(String nom) String
# afficherAge() int
afficherAdresse() String
}
```
Ensuite, dans la classe principale `Main`, crée **une instance** de `Personne` et appelle les méthodes **publiques** et **visibilité package**
Dans **une autre classe**, située dans **un autre package** crée un objet `Personne` et teste les méthodes selon leur visibilité et observe le résultat.
### 3 - Calculatrice (surcharge)
Créer une classe `Calculatrice` avec des **méthodes** pour effectuer **l'addition**, la soustraction, la multiplication et la division.
Vous devez utiliser la surcharge de méthode.
- La classe **ne doit pas utiliser de conditions** (if, else) **ni de boucles**.
- L'entrée des données sera simplifiée et prédéfinie, et les calculs devront être effectués en utilisant des méthodes directement appelées.
- `add()`, `sous()`, `divid()`, `multi()` prennent deux entiers en paramètres et retourne leur somme.
- `add()`, `sous()`, `divid()`, `multi()` prennent deux nombres à virgule flottante (double) en paramètres et retourne leur somme.
- public double `effectuerOperation(String operation, double a, double b)` sera la méthode qui permettra de réaliser les opération elle poura utiliser la condition Switch exceptionnellement. Seul cette méthode sera appeler depuis l’instance `Calculatrice` pour effectuer des additions, soustractions, divisions et multiplications.
- Un message secret (easter egg) doit être affiché lorsqu'une certaine operation est détecté, sans utiliser de conditions explicite.
### 4 - Compteur (static)
Crée une classe `Compteur` qui contient :
- Une méthode statique `incrementer(int valeur)` qui prend un entier en paramètre et l'ajoute à une variable statique compteur.
- Une méthode statique `afficherCompteur()` qui affiche la valeur actuelle du compteur.
Que pensez-vous de ce compteur ?
Est-ce que cela pourrait poser des problèmes ?