Deuxième semaine

Rappel méthodologique (la démarche à suivre pour résoudre les exercices)

Exercice 1
Création d'une classe permettant le calcul de l'aire et du périmètre de cercles Cercle & TestCercle
Exercice 2
Création d'une classe permettant de manipuler les Durées (heures/minutes/secondes) Duree & TestDuree
Exercice 2
Création d'une classe permettant de calculer la distance parcourue par un vélo Velo & TestVelo

Rappel méthodologique :

Structure d'un programme : une classe "Test" + une classe "Boite à outils"

A partir de maintenant, on travaillera toujours avec deux classes : la première sera appelée classe "Test" et s'occupera des saisies et des affichages, tandis que la seconde classe appelée "Boite à outils" contiendra la partie algorithmique du programme.

Squelette d'une classe "Test" en Java (i.e. le programme principal gérant les entrées/sorties) :
 

class TestXXX
{
    public static void main(String[] args)
    {
        // Déclaration des variables

        // Création des objets ne nécessitants pas d'informations supplémentaires

        // Saisie des données auprès de l'utilisateur

        // Création des objets nécessitants des informations saisies au clavier

        // Réalisation des calculs par invocation de méthodes sur les objets

        // Affichage des résultats

    }
}

Squelette d'une classe "Boite à outils" en Java (i.e. la classe réutilisable contenant l'algorithmique) :
 

class XXX
{
    // Déclaration des attributs
    private typeDeDonnées nomDeVariable;

    // Constructeur de la classe
    XXX( paramètres )
    {
        // Initialisation des attributs
    }

    // Ensemble de méthodes
    typeDeDonnée nomDeLaMéthode( paramètres )
    {
        // Si le type de donnée est différent 
    }
 
    // ...

    }
}

Quelques principes à retenir avant de coder :

  1. Aucun affichage et aucune entrée/sortie dans la classe "Boite à outils".
  2. Eviter d'effectuer des calculs dans la classe "Test".
Une démarche possible de création de classe (caractérisant un ensemble d'objets) : Un petit exemple : la classe permettant de manipuler des carrés.

1. Recherche des informations caractéristiques concernant l'objet carré.
    - les propriétés mathématiques : 4 cotés égaux, 4 angles droits, les diagonales qui se coupent en leur milieu ....
    - qu'est qui permet de distinguer différents carrés ? ..... leur taille ! C'est à dire la longueur d'un des cotés.

2. Quels attentes, quelles questions pourrait-on poser à un carré ?
    - lui demander la longueur de ses cotés, la valeur de son périmètre, de son aire, éventuellement sa couleur, ses soordonnées ...

3. Quels choix faisons-nous ?
    - on décide par exemple de considérer la longueur comme information nécessaire et suffisante : on identifie ainsi un attribut de la classe carré.

4. Imaginons des cas d'utilisation de la classe carré :
    - on voudrait pouvoir créer un carré en lui donnant la longueur de son coté.
    - ensuite on doit pouvoir récupérer la longueur de son coté, son périmètre et son aire (on laisse tomber la couleur pour l'instant ;-)

Vous pourrez trouver les sources ici : Carre.java et TestCarre.java.



Exercice 1 :
Nous cherchons à écrire une classe permettant de définir des cercles de rayons différents. De plus, nous voulons pouvoir demander à ces différents cercles de nous donner la valeur de leur périmètre et de leur aire. Lorsque nous disposerons de notre classe Cercle il ne nous restera plus qu'à créer une classe TestCercle qui effectuera les saisies des données auprès de l'utilisateur et qui produira les affichages suivants :
 

C:\Java\Algo> java TestCercle
Entrez le rayon du 1er cercle : 4.5
Entrez le rayon du 2nd cercle : 3.2
Le cercle de rayon 4.5 a pour perimetre 28.274333882308138 et pour aire 63.61725123519331.
Le cercle de rayon 3.2 a pour perimetre 20.106192982974676 et pour aire 32.169908772759484.
C:\Java\Algo>

Rappel : Aucun affichage ne doit etre effectué dans la classe Cercle !



Exercice 2 :
Maintenant, on aimerait pouvoir ajouter une seconde à une durée ! Pour cela nous devrons d'abord définir une classe Duree qui représentera une durée (i.e. heures, minutes, secondes), et disposer d'une méthode ajouter1Seconde() ainsi que de méthodes permettant d'accéder à l'heure courante, la minute courante, les secondes courantes (il serait intéressant aussi d'avoir une méthode renvoyant la durée en secondes) ... Une fois cette classe créée, il faudra créer la classe TestDuree permettant de vérifier le fonctionnement de la classe Duree : pour cela on crééra d'abord un objet particulier représentant la durée 12h 59mn 59s , à laquelle on ajoutera une seconde avant d'afficher la nouvelle durée. Puis, on créera une deuxième durée, mais en saisissant cette fois les informations permettant de créer une durée auprès de l'utilisateur.
 

C:\Java\Algo> java TestDuree
12h. 59m. 59s.
Nombre total de secondes : 46799
Apres l'ajout d'une seconde : 13h. 0m. 0s.
Nombre total de secondes : 46800
Donnez une duree :
Nombre d'heures    : 4
Nombre de minutes  : 32
Nombre de secondes : 59
Nombre total de secondes : 16379
Apres l'ajout d'une seconde : 4h. 33m. 0s.
Nombre total de secondes : 16380
C:\Java\Algo>



Exercice 3 :
On cherche dans cet exercice a calculer le développement d'une bycyclette, connaissant le nombre de dentsz du plateau, le nombre de dents du pignon et le diamètre de la roue arrière. Le développement correspond à la distance parcourue en un tour de pédalier (le nombre de dents du plateau, du pignon sont des entiers, le diametre de la roue arrière est donné en un nombre entier de millimètres. On veut calculer le développement en nombre de mètres avec des chiffres décimaux.
 

C:\Java\Algo> java TestVelo
Developpement du 1er vélo (54, 12, 700) --> 9.896016858807847
Donnez un plateau : 64
Donnez un pignon  : 8
Donnez une roue   : 800
Développement du 2eme velo (64, 8, 800) --> 20.106192982974676
C:\Java\Algo>