[Structure de données]Type PRIVATE et ACCESS

Type PRIVATE et ACCESS [Structure de données] - Ada - Programmation

Marsh Posté le 07-01-2007 à 20:41:30    

Souviens toi, souviens toi, du 4 décembre 2006...
C'est le jour où j'ai posté "Tableau de record et de type énuméré".
 
Ma structure a évolué et j'ai un soucis...
 
Ci-dessous mon package gestion_fich_compte.ads.
Je déclare les types, les fonctions et les procédures.
 
Uniquement les fonctions et procedures dans le package body.
 
Je tiens à dire mercià Jovalise, pour son aide apporté dernièrement, mais je me suis ouvert les veines en voyant ton "petit programme de gestion", fmi... C'est une usine à gaz !
 
Pourquoi je parle de fmi ? Car je suis tombé sur ton prog en tapant quelques mots clés pour ma recherche...
Je retrouve mes petits comme t_compte ou t_rubrique... Comme quoi, à force de réinventer la roue, elle finie toujours par être ronde...
 
Et oui, ci-dessous un programme de gestion ! (rien à voir avec fmi... )
 
En quelques mots :
 
Nous avons un MENU qui propose de gérer des comptes.
Le compte est un  record d’un en-tete et d’une liste de lignes.
La liste de ligne est un record d'un entier et d'un tableau de lignes comptables.
Chaque ligne comptable est un record d'une date, rubrique, mode de paiement et une valeur (float)
Les informations devraient êtres enregistrées dans un fichier « comptes.dat »
 
Les problèmes que je rencontre sont en commentaire.
 
Ils concernent comme le titre l’indique, un type private et/ou access.
Le PRIVATE est bloquant, j’en suis sure.
 
Merci à celles et à ceux qui peuvent m'apporter de l'aide, je continue à bosser dessus et suis en ligne si besoin.
Bonne soirée.
 

Code :
  1. WITH ada.Text_IO; use ada.Text_IO;
  2. PACKAGE gestion_fich_compte IS
  3.  
  4.    --les sous types id_banque et num_cpte sont des entiers contraints
  5.    SUBTYPE Id_Bque IS Integer RANGE 100..500;
  6.    SUBTYPE Num_cpte IS Integer RANGE 10000..30000;
  7.  
  8.    TYPE T_En_Tete IS
  9.       RECORD
  10.       Bk:Id_Bque;
  11.       N_cpte:Num_cpte;
  12.       Solde:Float:=0.0;
  13.       END RECORD;
  14.        
  15.    --les sous type t_jour, t_mois et t_annee sont des eniters contraints
  16.    SUBTYPE t_Jour IS Integer RANGE 1..31; 
  17.    SUBTYPE t_Mois IS Integer RANGE 1..12; 
  18.    SUBTYPE t_Annee IS Integer RANGE 1900..2100;
  19.  
  20.    --le type t_date est l'enregistrement d'un jour, d'un mois et d'une année
  21.    TYPE T_Date IS
  22.    RECORD
  23.       j:t_Jour;
  24.       m:t_Mois;
  25.       A:t_Annee;
  26.    END RECORD;
  27.  
  28.    --t_rubriques et t__mode_paiement sont des types énumérés
  29.    TYPE T_Rubrique IS (loisirs, maison, salaire, voiture, divers );
  30.    TYPE T_Mode_Paiement IS (cb, cheque, virement);
  31.  
  32.    --les lignes comptables sont créées grace à l'enregistrement d'une date, d'une rubrique, d'un mode de paiement et une valeur
  33.    TYPE t_lignes IS
  34.    RECORD
  35.       Date:t_date;
  36.       Rubrique:T_Rubrique;
  37.       Mode:T_Mode_Paiement;
  38.       Valeur:float;
  39.    END RECORD;
  40.  
  41.    --un tableau de lignes comptables
  42.    TYPE T_Tab_Lignes IS ARRAY (1..10) OF T_Lignes;
  43. --/!\------------------------------------
  44.    TYPE T_ListesLignes IS RECORD         --
  45.       Nb: Integer:=0;                    -- Je comprends pas ce record...il est utile pour identifier un tableau de lignes ?
  46.       T:T_Tab_Lignes;                    --
  47.    END RECORD;                           --
  48. --/!\-----------------------------------
  49.  
  50.    TYPE T_Cpte IS RECORD
  51.       En_Tete:T_En_Tete;
  52.       Listes:T_ListesLignes;
  53.    END RECORD;
  54.  
  55.   --une banque un tableau de compte
  56.    TYPE T_Banque IS ARRAY(1..10) OF T_Cpte;
  57.      
  58.    --creation de 2 packages pour rendre compatible les types enumeres t_rubrique et t_mode_paiement
  59.      PACKAGE rubrique_Enumeration_Io IS NEW Enumeration_Io(t_rubrique);
  60.    USE rubrique_Enumeration_Io;
  61.  
  62.    PACKAGE Mode_Paiement_Enumeration_Io IS NEW Enumeration_Io(T_Mode_Paiement);
  63.    USE Mode_Paiement_Enumeration_Io ;
  64.  
  65. --   PROCEDURE Creer_Compte; -- avec le nouveau T_ListesLignes je me melange dans les parametres formels... c'est bien creer_cpte(e:t_en_tete) ?
  66. --   PROCEDURE Afficher_Compte;
  67. --   PROCEDURE Modifier_Compte;
  68.    PROCEDURE Menu_Principal;
  69.    PROCEDURE Suivi_Banquaire;
  70.  
  71. generic
  72.    TYPE Enregistrement_Cpte IS PRIVATE;     --rappelez moi ? c'est un type qui n'est pas vu par le client... alors ?
  73.  
  74.    private
  75.    TYPE Cellule;
  76.    TYPE Pt_Cellule IS ACCESS Cellule;
  77.    TYPE Cellule IS RECORD
  78.       Num:Positive;
  79.       Contenu:Enregistrement_Cpte;
  80.       Suivant:Pt_Cellule;
  81.    END RECORD;
  82.  
  83. end gestion_fich_compte;

Message cité 1 fois
Message édité par stupid_coder le 09-01-2007 à 00:20:15

---------------
...pour les miracles ? prévoir un délai !
Reply

Marsh Posté le 07-01-2007 à 20:41:30   

Reply

Marsh Posté le 09-01-2007 à 06:02:42    

Bonjour coder, il fait quoi ce mot reservé 'generic' en bas de la specification du paquetage ?

Reply

Marsh Posté le 09-01-2007 à 06:50:27    

stupid_coder a écrit :


Code :
  1. --/!\------------------------------------
  2.   TYPE T_ListesLignes IS RECORD         --
  3.      Nb: Integer:=0;                    -- Je comprends pas ce record...il est utile pour identifier un tableau de lignes ?
  4.      T:T_Tab_Lignes;                    --
  5.   END RECORD;                           --
  6. --/!\-----------------------------------



 
Si on savait ce qu'on en fait, on pourrait t'en dire plus.
 
Moi je dirais, une liste de ligne de charactere inplémenté dans un tableau, à priori , vu le nom de la strucure  :??:  
 

Reply

Marsh Posté le 09-01-2007 à 22:15:34    


 
On souhaite construire une application interactive permettant de gérer les comptes bancaires d’une personne.
Chaque compte est défini par une entête (code banque, numéro de compte, solde) et un ensemble de lignes comptables (date, valeur, rubrique, mode de paiement).
Les comptes sont enregistrés sur disque dans un fichier comptes.dat sous la forme d’une entête et du nom d’un fichier de lignes comptables associé au compte.On souhaite construire une application interactive permettant de gérer les comptes bancaires d’une personne.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed