Exercices supplémentaires

De $1

Une calculatriceCalculatrice.PNG

On veut créer une classe qui représente une calculatrice (cf. figure ci-contre).

  1. Quels sont les champs nécessaires pour cette classe ? Quel est leur type ?
  2. Quelles sont les méthodes qu'il faut créer ? Quelle est leur signature ? On veut réaliser toutes les opérations de cette calculatrice, y compris la flèche à gauche qui enlève le chiffre unité dans le nombre présent dans l'accumulateur.
  3. Pour les touches chiffre (0, 1, ..., 9), on proposera deux façons de faire. La première façon consiste à définir une méthode par chiffre (zero(), un(), ...). La deuxième façon consiste à avoir une méthode chiffre avec un paramètre (le chiffre à entrer, pas un nombre!)
  4. Ecrire le code Java qui correspond et le tester.

Note: Si x est une variable numérique, l'instruction Java Math.sqrt(x) calcule la racine carrée de x.

Le temps qui passe

On veut écrire un programme qui permet de convertir des secondes, en minutes et en heures.

  1. Proposer une classe Temps avec une méthode String convertir(int secondes); qui prend en paramètre un nombre de secondes et renvoie une chaîne de caractères qui donne le nombre d'heures et de minutes représentés par ce nombre de secondes. Par exemple, t.convertir(4567)doit renvoyer la chaîne "1h 16mn 7s".
  2. Comment faire pour tester cette méthode ?
  3. Y a-t-il un intérêt à avoir plusieurs instances de la classe Temps ?

Les nombres complexes et les références

Implanter les deux classes ComplexeCartesien et ComplexePolaire vues en cours. Ceux qui veulent (et qui savent) pourront ajouter un constructeur. Les autres attendront le prochain cours pour savoir de quoi l'on parle et utiliseront simplement la notation pointée pour choisir les valeurs des champs.

  1. Sachant que la norme d'un nombre complexe est le carré du module sauriez vous ajouter une méthode module() dans ces deux classes ?

Créer deux objets c1 et c2 de type ComplexeCartesien qui représentent la même valeur, par exemple le nombre complexe i.

  1. Que se passe-t-il si l'on compare c1 et c2 avec l'opérateur de comparaison == ? Proposer un programme Java qui (dé)montre vos affirmations.
  2. Que se passe-t-il si au lieu de travailler avec deux objets on travaille avec un seul objet et (toujours) deux références ? Proposer un (autre) programme Java qui illustre cette situation. Si vous ne connaissez pas la différence entre référence et objet il faut relire le cours, faire la distinction est essentiel pour pouvoir programmer en Java !
  3. Ajouter une méthode boolean egalA(ComplexeCartesien c) qui permet de comparer la valeur d'un nombre complexe avec un autre. Testez-la!