coo poo 1 3 6 5 polymorphisme

5.polymorphisme

* Dans un folio, le polymorphisme permet de

- traiter toutes les lectures en une seule query au lieu de 12

- traiter tous les calculs en une seule query au lieu de 12

- traiter tous les totaux du folio 5 en une seule query au lieu de 12

- traiter toutes les mises en forme en une seule query  au lieu de 12

- faire le niveau siège d'un folio en 4 tâches, 4 queries principales

  au lieu de 4 fois 12 tâches.

 

* Au départ de l'analyse le polymorphisme permet de considérer une tâche, une action, une fonction comme un tout, une seule query, un seul objet sans se soucier des variances internes.

exemples: au niveau global de l'analyse:

- considérer la tâche 'lecture' comme un tout sans se soucier des

  6 types de lectures qui sont compris dans la fonction lecture.

- considérer la tâche 'calcul' comme un tout sans de soucier des

  4 types de calculs à l'intérieur de l'objet calcul.

- considérer la tâche 'totalisations' comme un tout, un module entier

  sans se soucier des 3 types de totaux.

- considérer la tâche 'mise en forme' comme un tout sans rentrer dans les

  détails des 2 types de mise en forme.

 

Donc les tâches 'lecture', 'calcul', 'totaux','mise en forme' sont des modules entiers, polymorphes, des objets bien définis qu'on peut manipuler en entier sans avoir besoin d'entrer dans les détails tout en sachant qu'il contiennent bien en eux différentes façons de faire des lectures, calculs, totaux. En fait on sait qu'ils savent lire toutes les lignes, calculer tous les taux, sommer tous les totaux mais on ne l'explicite pas à un niveau haut de l'analyse.

 

Avantage du polymorphisme: Cela permet de faire de l'analyse au niveau haut très juste, très définitive, très claire et précise qu'on ne retouche jamais et qui reste toujours juste quels que soient les développements futurs et décisions et choix ultérieurs pris au moment du développement.

    Comment est ce possible de rester toujours juste alors que les décisions futures ne sont pas encore prises? Parce que c'est polymorphe: par exemple la lecture dans RTGE 96 est polymorphe donc quel que soit le type de lecture ou la variance de lecture ou le nombre de nouvelles façon de faire les lectures ça sera toujours de la lecture donc ça restera toujours l'objet lecture qui se trouve au début du traitement avant le calcul et avant la création de la base pour les folios de synthèse.

    Par cette méthode, chaque schéma, dessin, graphe, analyse organique, dictionnaire de données, document de départ au niveau haut restera juste très longtemps à travers beaucoup de développements et décisions variées car l'analyse se définit et s'affine par étages, par niveaux d'abstractions successifs.

    Chaque niveau d'abstraction inférieur vient préciser, compléter, éclaircir le niveau supérieur sans jamais le contredire car le niveau supérieur intègre suffisamment d'abstraction, est suffisamment polymorphe pour qu'on puisse tout mettre dans le niveau inférieur sans contredire le niveau d'abstraction supérieur qui reste général.


 

Exemple 1. totaux:

   Dans l'analyse RTGE 96 de niveau haut, quand on désigne la tâche totalisations par un rectangle après le calcul de lignes détails et avant la mise en forme, c'est juste, ça ne changera jamais, les totaux ne passeront jamais derrière les mises en forme ou devant les lectures. Par contre, à l'intérieur de la tâche 'totaux' il peut y avoir une seule query (polymorphe de 4 select) comme dans le folio 5 ou bien on peut trouver une cascade de plusieurs queries comme dans le folio 1.

 

Exemple 2. calcul:

   La tâche de 'calcul' est polymorphe parce qu'elle peut traiter 4 types de taux à la fois. C'est simple vu de l'extérieur, et c'est juste.

Cela permet d'avoir de l'analyse toujours juste et propre même quand ça évolue.

 

Exemple 3. taux:

     En cas de modification dans les types de taux, le concept de calcul de taux ne change pas il est toujours au même endroit avec le même nom, c'est seulement l'intérieur qui change.

 

Exemple 4. sous-totaux:

    En cas de changement de calcul de totaux, (plusieurs lignes changent de sous-totaux, quittent un sous total pour aller dans un autre) , la query totalisation vue de l'extérieur ne change pas, parfois même les SELECT de la query ne sont pas augmentés ou diminués mais c'est à l'intérieur que cela change.

En cas de changement de paramètres de calcul, la lecture ne change pas, seuls les paramètres changent, et les identifiants de stockage ne changent pas.

 

Exemple 5. Polymorphisme et paramétrage:

   Quand la totalisation du folio 5 n'est pas polymorphe, il faut 12 queries de totalisation pour faire 12 lignes totaux. Lorsque les calculs de totaux (SELECT) sont regroupés dans un module de totalisation polymorphe (BS5) paramétré (BP8), il ne reste plus qu'une seule query (BS5) au lieu de 12 queries. Le polymorphisme permet à une query de faire plusieurs types de totaux (plusieurs SELECT réunis par des UNION). A l'intérieur d'un type de total (à l'intérieur d'un SELECT) des lignes diverses sont traitées en même temps grâce à la jointure avec une table de paramètres (BP8).

    Par exemple le polymorphisme permet de traiter 3 types de totaux, puis à l'intérieur de chaque type de totaux, le paramétrage permet de traiter 4 lignes. Par conséquent, le polymorphisme combiné au paramétrage permet de traiter simultanément 3 * 4 = 12 lignes en une seule query composée de 3 SELECT réunis par des UNION et joints à une table de paramètres de totalisation (BP8). Voilà comment on peut combiner plusieurs techniques d'optimisation. Le paramétrage peut également être considéré comme un moyen de rendre le module polymorphe (comme l'UNION de plusieurs SELECT en parallèle).

   (remarque: d'habitude en COBOL on met plusieurs objets fils dans un objet parent et on déclenche l'un ou l'autre objet fils par PERFORM selon le message paramétré que l'on passe à l'objet parent au moment de son appel par CALL).

 


 

Conclusion du polymorphisme:

    Ainsi en approchant l'application par les concepts de lecture, calcul, totalisation, on manipule des objets polymorphes généraux qui ne changent pas leur aspect extérieur avec le temps qui passe (les organigrammes, procédures, CLIST sont les mêmes et toujours valables), seuls les détails changent. Donc la compréhension globale est facilitée par le polymorphisme des modules, et la conception est simplifiée, stabilisée, perennifiée, solide..

 

 

 

  

    tâche conceptualisée polymorphe ===> analyse simple, correcte et puissante

 

 

--------------------------------------------------------------------

 

Chaque query peut avoir plusieurs selects, chaque select a des dizaines de paramètres selon l'endroit ainsi le polymorphisme peut passer en déclenchant tel select de la query ou tel paramètre du select 
Chaque classe peut contenir plusieurs objets, chaque objet contient plusieurs méthodes et paramètres ainsi on peut déclencher tel objet de la classe, telle méthode de l'objet et utiliser plusieurs paramètres 
Le polymorphisme vient du fait que la classe générique peut traiter une multitude de cas spécifiques

 

   plusieurs formes de calcul explicitées

   plusieurs types de totaux explicités                =====> programmation précise

                                                                          

-