Version du 30 09 2013
Note de mise en œuvre : Opérations sur les quantités
Une quantité est « une propriété de ce qui peut être mesuré, compté (Larousse) » ; c’est un couple unité / valeur, auquel on peut adjoindre un facteur de conversion de manière à relier entre elles des unités dérivées d’une unité de base.
La notion de quantité force à préciser les unités associées aux valeurs numériques entrant dans des opérations arithmétiques ou logiques afin de :
· de vérifier la compatibilité des unités des opérandes,
· de déterminer l’unité de grandeur du résultat,
· d’assurer la conversion des valeurs numériques.
Deux objectifs indirects sont sous tendus par la mise en œuvre de la notion de quantité:
· la spécialisation des signatures des opérations,
· l’assignation au compilateur de la vérification de la cohérence des opérandes.
Les dispositifs réglementaires définissent des opérations sur des valeurs numériques. Ces valeurs numériques sont exprimées implicitement dans des unités (jours indemnisés, unités monétaires …).
Une quantité est doublet unité / valeur.
L’étude décrit le comportement de ces valeurs numériques ; elle définit une typologie des unités rencontrées dans les opérations définies par les dispositifs réglementaires.
L’étude exclut les composants de type cumuls, qui sont aussi des doublets unité / valeur, mais qui n’ont de réalité que dans la gestion du temps relatif aux retours de l’actualisation (voir Composants de base / Les déclencheurs les cumuls).
La quantité est « la valeur (qui) correspond au nombre d’unités ou mesure qui sert à déterminer une collection de choses considérées comme homogènes, ou portion de matière. (Robert). »
L’unité est « une grandeur finie servant de base à la mesure des autres grandeurs de même espèce (Robert) ».
Une quantité est un doublet Unité / Valeur.
Dans le cadre de l’application on distingue :
· des quantités monétaires,
· des quantités d’affiliation (jours, heures, cachets…),
· des quantités d’actualisation,
· des quantités d’imputation (jours de chômage attesté, jours de maladie, mois de cumul indemnisation / activité réduite …).
Il existe dans le cadre des dispositifs réglementaires des équivalences entre quantités exprimées dans différentes unités. De manière générale, ces unités sont équivalentes à un facteur multiplicatif près (le coefficient de conversion ou le facteur d’échelle).
On définit ainsi :
· des unités de base,
· et des unités dérivées.
Une unité dérivée est attachée à une unité de base. Les conversions entre unité de base et unités dérivées se font indifféremment dans les deux sens.
Exemple avec les quantités d’affiliation
· l’unité de base est l’heure (unité pivot),
· les unités dérivées sont :
§ les jours, avec comme facteur d’échelle le nombre d’heures par jour (5 heures par jour, pour une durée légale hebdomadaire de travail de 35 heures),
§ les cachets, avec comme facteur d’échelle le nombre de cachets par jour X le nombre d’heures par jour
Par construction, l’unité de base et ses unités dérivées sont « compatibles ».
Le format externe peut être :
· en double précision,
· un double,
· une valeur arrondie, pour laquelle on précise :
§ le chiffre sur lequel porte l’arrondi (0 unité, 1 décime, -1 dizaine…)
§ le type d’arrondi :
· le plancher,
· le plafond,
· le plus proche voisin
Les quantités sont munies d’opérations logiques et d’opérations arithmétiques.
Les opérandes peuvent être :
· deux quantités, sous réserve que les unités soient compatibles,
· une quantité et une valeur arithmétique.
Les notions d’unités de base et d’unités dérivées permettent la conversion des unités dérivées en unités de base. La conversion se fait via le « facteur de conversion » (voir le paragraphe : Les unités ci-dessus).
Le coefficient de conversion est le facteur par lequel il faut multiplier la valeur, exprimée dans l’unité de la quantité à convertir, pour obtenir la valeur, exprimée dans l’unité souhaitée.
L’inverse du facteur de conversion (1 / facteur de conversion) permet de retrouver la quantité à convertir à partir de la quantité convertie.
Dans les situations où le facteur de conversion peut varier avec le temps (jour d’affiliation / heures d’affiliation, devises, par exemple) le facteur de conversion doit être renseigné en fonction de la date de l’opération).
Les facteurs de conversion sont des paramètres utilisés par les opérations de conversion ; ils peuvent organisés sous forme de tableaux regroupant, pour une unité de base chacune des unités dérivées et leur facteurs de conversion associés (multiplicateur pour retrouver la valeur dans l’unité de base).
Pour les facteurs de conversion susceptibles d’évoluer dans le temps, les tableaux de conversion sont subdivisés par périodes d’application.
On distingue, dans le cadre des applications, des :
· Unités monétaires
· Unités d’affiliation
· Unités (de temps) de travail
· Unités d’actualisation
· Unités de suivi (d’imputation)
Euro (unité de base)
Cent d’euro
Jour de contribution
Heure (unité de base)
Cachet
Vacation
Embarquement
Jour de suspension
Les coefficients de conversions en heures sont fonction de la durée légale du temps de travail
Jour calendaire (unité de base)
Jour ouvrable
Jour ouvré
Jour de chômage attesté
Jour de formation
Jour maladie…
Jour de chômage attesté
Mois de maintien indemnisation / activité réduite
Jour d’affiliation (unité d’affiliation ?)
Montant versé (au titre d’une aide)
Les quantités d’imputation sont analysées dans le cadre de l’étude sur « Les déclencheurs »
|
Constructeurs |
|
Quantité(Unité lUnité) Retourne une quantité ayant l’unité indiquée en paramètre et la valeur 0. |
|
Quantité(Unité lUnité, laValeur) Retourne une quantité ayant l’unité et la valeur donnée indiqués en paramètresr |
|
|
|
Accesseurs |
Unité : |
getUnité() |
int : |
getValeur() |
int : |
getValeur(object lArrondisseur) Retourne la valeur arrondie par l’objet donné en paramètre |
void : |
arrondir(int laDécimale, int lArrondi) Arrondit la valeur de la quantité aux spécifications fournies par les paramètres, avec : laDécimale sur laquelle porte l’arrondi · 0 = l’unité, · n le nième chiffre après la virgule, · -n le nième chiffre avant la virgule) lArrondi = (PLANCHER, PLAFOND,
PLUS_PROCHE_VOISIN) |
Quantité : |
min(Quantité
à Comparer) Retourne la valeur la plus petite ; lance une exception si les unités sont différentes. Deux quantités reliées entre elles par un facteur d’échelle doivent avoir été converties, au préalable, dans la même unité |
Quantité : |
max(Quantité
àComparer) Retourne la valeur la plus grande ; lance une exception si les unités différentes |
int : |
compareTo(Object
o) |
int : |
equals(Object
o) Retourne vrai (0) si même unité et même valeur (à un facteur d’échelle près) |
|
|
|
Modificateur |
void : |
setValeur(double
laValeur ) |
void : |
arrondir(int
leChiffreAArrondir, int leTypeDArrondi) Retourne la valeur arrondie aux spécifications
fournies par les paramètres, avec : le chiffre à arrondir est indiqué par sa
position :
§
0 = l’unité,
§
n le
nième chiffre après la virgule,
§
-n le
nième chiffre avant la virgule) le type d’arrondi est :
§
PLANCHER,
§
PLAFOND,
§
PLUS_PROCHE_VOISIN
|
void : |
plus(double laValeur) Additionne
la valeur donnée en paramètre à la valeur de la quantité du
récepteur (dans l’unité du récepteur). |
void : |
plus(Quantité lOperande) Additionne la quantité paramètre à la quantité du récepteur (dans l’unité du récepteur). Lance une exception si la conversion n’est pas possible. |
void : |
moins(double laValeur) Retourne
la différence la valeur de la référence et celle du paramètre. |
Quantité : |
moins(Quantited lOperande) Retourne
la différence entre la référence et le paramètre. Lance une
exception si la conversion n’est pas possible. |
Quantité : |
multipliedPar(double
leMultiplicateur) Retourne
le produit des valeurs du paramètre et du récepteur |
Quantited |
multipliedPar(Quantited
leMultiplicateur)
Retourne la quantité dont la valeur est le produit de
celle du récepteur et du double donné en paramètre. Lance une
exception si les unités ne sont pas compatibles. |
Quantit : |
divisedPar(double leDiviseur) Retourne, dans l’unité du récepteur, la quantité dont la valeur est le quotient du récepteur par le double donné en paramètre |
Quantité : |
divisedPar(Quantited leDiviseur) Retourne la quantité dont la valeur est le quotient de celle du récepteur par le double donné en paramètre. Lance une exception si les unités ne sont pas compatibles. |
|
|
Conversion |
Quantité : |
convertirVers( Unité unitéConvertie, double facteurDeConversion) Retourne
la quantité convertie dans l’unité indiquée en paramètre. |
Quantité : |
convertirVers( Unité unitéConvertie, FacteursDeConversion f) Retourne
la quantité à convertir dans l’unité et du tableau des facteurs
de indiqués en paramètre. Le
tableau des facteurs de conversion contient pour chaque unité
dérivée le facteur de conversion vers l’unité de base. La
conversion peut se faire indifféremment vers ou à partir de l’unité
de base. |
Quantité : |
convertirVers( Unité unitéConvertie, FacteursDeConversion f Damj dateDapplication) Retourne
la quantité à convertir dans l’unité et du tableau des facteurs
de indiqués en paramètre. Le
tableau des facteurs de conversion contient pour chaque unité
dérivée le facteur de conversion vers l’unité de base. La
conversion peut se faire indifféremment vers ou à partir de l’unité
de base. Cette
opération concerne les facteurs de conversions susceptibles d’évoluer
dans le temps |
|
|