Getsuyodev, Programming is mainly used when constructing an application. Programming requires knowledge of application domains, algorithms, and programming language expertise. Programming can be developed in different logic based on developer knowledge.

POO – TAD de rationnel avec exceptions

Programmez en orienté objet en C Sharp



Objectif : Construire une classe de nombres rationnels à partir de la traduction en diagramme UML du TAD de rationnel.

Une classe de rationnels implantera l’interface IRatio contenant la méthode Reduire ( ) l’objet rationnel :

La classe Rationnel  :

classes-objets

Les  2 propriétés Denom et Num représente respectivement le dénominateur et le numérateur du rationnel, elles sont rangées dans les champs privés FDenom et FNum.

Reduire ( ) : rendre le rationnel irréductible en calculant le pgcd du numérateur et du dénominateur, puis diviser ces deux termes par le pgcd.

pgcd ( int a, int b ) :  renvoie le pgcd de deux entiers non nuls.

ppcm ( int a, int b ) :  renvoie le ppcm de deux entiers non nuls.

Normalise ( ) : normalisation du signe du rationnel, soit dénominateur toujours positif et seul le numérateur est signé.

operator  +, -, /, * :  opérations classiques sur les rationnels.

ToString (  ) :  renvoie le rationnel sous forme d’une fraction avec une barre “/” ( ex : 3/5 )
 

La classe Rationnel sera rendue robuste par l’utilisation d’une classe d’exception rationnelException :

Des exceptions seront lancées dans les deux cas suivants :

La création d’un rationnel  à dénominateur nul comme new Rationnel ( 5 , 0 ) déclenchera une rationnelException avec comme message :

La mise à la valeur 0 du dénominateur d’un rationnel  r ( r.Denom = 0 ) déclenchera une rationnelException avec comme message :

using System;

    class rationnelException : Exception
    {
        public rationnelException(string mess)
        {
        }
    }

    interface IRatio
    {
       
    }

    class Rationnel : IRatio
    {
        private int FNum, FDenom;

        //-- méthodes privées
        private static int ppcm(int a, int b)
        {
        }

        private static int pgcd(int a, int b)
        {
        }

        private void Normalise()
        {
        }

        //-- constructeur
        public Rationnel(int a, int b)
        {
        }

        //-- propriétés publiques
        public virtual int Num
        {
        }

        public virtual int Denom
        {
        }

        //-- méthodes publiques
        public void Reduire()
        {
        }

        public override string ToString()
        {
        }

        // opérateurs :
        public static Rationnel operator +(Rationnel a, Rationnel b)
        {
        }

        public static Rationnel operator -(Rationnel a, Rationnel b)
        {
        }

        public static Rationnel operator *(Rationnel a, Rationnel b)
        {
        }

        public static Rationnel operator /(Rationnel a, Rationnel b)
        {
        }
    }

class Application // testez tous les opérateurs
{
   public static void Main ( )
   {
     Rationnel r1, r2, r3;
     r1 = new Rationnel( 2 , 5 );
     r2 = new Rationnel ( 14 , 60 );
     r3 = r1 + r2;  // test de l'opérateur '+'
     System.Console.Write(r1.ToString( )+" + "+r2.ToString( )+ " = ");
     System.Console.WriteLine(r3.ToString( ) );
     r1 = new Rationnel( 2 , 0 ); // rationnelException lancée ici
     System.Console.ReadLine( );
   }
}

Comments are closed, but trackbacks and pingbacks are open.

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More