## 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 1. Crée une nouvelle classe `Addition` 2. Dans cette classe, crée une méthode avec la signature suivante ```java int calculerSomme(int a, int b){ // Le code de la somme devra se trouver ici // Cette méthode doit retourner la somme des // nombres : a et b // 👇 return ; } ``` La méthode doit simplement **additionner** les deux paramètres passés arguments de la méthode et **retourner le résultat**. Dans un programme principal (main) Le code sera appelé de la façon suivante : ```java public class Main { void main(){ Addition addition = new Addition(); // Ex. pour calculer 1 + 2 int somme = addition.calculerSomme(1,2); // Vérifier le résultat en l'affichant IO.println(somme); } }; ``` ### 2 - Personne (visibilité) Crée une classe `Main` dans un package `exo2` Crée une classe `Personne` dans un package `exo2.personne` Ajouter les attributs suivants à la class `Personne` ```java private String nom; private int age; private String adresse; ``` La classe Persone aura 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 ?