TP Calculette Fractions

Une calculette Fractions

Version pdf

L'objectif de ce TP est de créer une calculette qui permettra de mettre en oeuvre la classe Fraction dans un environnment événementiel. Ce TP permettra d'aborder différents compléments au cours.

Pour mener à bien ce travail il faut une classe Fraction fonctionnelle et sérieusement testée. Nous n'en utiliserons qu'une partie, voir plus loin.

1) Création de l'interface.

Créer d'abord un projet C# de type Windows, nommez ce projet CalculetteFraction. Nommer le formulaire Calculette -nom de la classe-.

L'interface graphique à créer se présentera ainsi :

travail à faire : créer l'interface graphique en respectant les conventions de nommage proposées.

2) Gestion des événements du pavé numérique.

A chaque fois que l'utilisateur cliquera sur un chiffre du pavé numérique, la propriété "Text" du contrôle devra s'afficher. Nous allons associer à chacun de ces contrôles le même gestionnaire d'événement -la même méthode-.

Pour cela, séléctionner chaque bouton du pavé numérique et dans sa page propriété faites apparaître les événements disponibles; nommez pour chacun des boutons la méthode btn_click pour l'événement Click.

Double clicker sur l'événement, la méthode btn_click s'affiche dans la page de code.

private void btn_Click(object sender, System.EventArgs e)
{
         txtEcran.Text =txtEcran.Text + ((Button)sender).Text ;

}

Commentaire : ce gestionnaire d'événement prend comme nom d'argument sender qui correspond à l'objet source, ici un bouton, dont on peut récupérer les propriétés; nous utilisons la propriété Text. Le transtypage -cast- est obligatoire car le gestionnaire ne sait pas à priori le type de l'objet source.

travail à faire : compiler et tester l'affichage dans la zone écran.

3) Diagramme de classes.

On vous fournit le diagramme de classes.

Question 1

Répondre aux questions suivantes.

  • justifier l'association et la navigabilité
  • justifier la présence de l'attribut privé Operation.

 

Modifier le code en conséquence en intégrant les attributs nécessaires dans la classe Calculette (nommez F1 l'attribut de l'association) ainsi que les méthodes -sans code-.

Ajouter une nouvelle classe : Projet/Ajouter une classe ; nommez le fichier Fraction.cs. Copier dans ce fichier la classe Fraction en ne conservant que les attributs et méthodes conformes au diagramme de classes.

4) Fonctionnement de la calculette.

Lors de l'initialisation de la machine, la références F1 est à null; la fin de la saisie d'une fraction par l'utilisateur est détectée par l'appui sur une touche d'opération. Si cette fraction est le premier opérande, F1 la référera de même que l'attribut Opération réfèrera l'opération, sinon une opération à déjà été mémorisée et on effectue le calcul. Ce dernier résultat de vient l'opérande F1.

Ce processus peut être modélisé en utilisant un diagramme d'activité :

fig. Diagramme d'activité UML

Commentaire

  • le diagramme d'activité enchaîne les états (par exemple "Nouvelle fraction"), activités ( par exemple "Lire la fraction") et des règles de synchronisation( losange).

5) Ecriture et tests unitaires des méthodes.

a) La méthode GetFraction.

Cette méthode prend une chaîne de caractères et retourne la fraction concernée.

Pour tester cette méthode, créer une classe Test à rajouter au projet :

public class Test
{
        public Test()
       {

        }
        public static Fraction GetFraction(string chaine)
       {
        }
        public static void TestGetFraction(string chaine)
       {
               Fraction f=GetFraction(chaine);
               Console.WriteLine("num:{0},den:{1}",f.GetNumerateur(),f.GetDenominateur());
       }
}

Cette classe sera appelée dans le Main :

static void Main()
{
//Application.Run(new Form1());
Test.TestGetFraction("12/34");
Test.TestGetFraction("-34");

}

Commentaires

  • en mettant en commentaire, la sortie se fait sur la console
  • les méthodes de la classe Test sont statiques

Travail à faire.

Ecrire et tester la méthode GetFraction

Aide : vous utiliserez la méthode Split de la classe string. Voir l'aide.

Une fois testée cette méthode pourra être incluse dans la classe Calculette, retirer l'attribut static.

6) La méthode Calcule.

En fonction de l'opération et des opérandes cette méthode retourne la fraction résultante.

Travail à faire.

Imaginer une méthode de test

Ecrire et tester la méthode.

Une fois testée cette méthode pourra être incluse dans la classe Calculette, retirer l'attribut static.

7) Terminer le projet.

Travail à faire.

Terminer le projet...