meta données pour cette page
Ceci est une ancienne révision du document !
Règles sur les classes
Version 04-2023
Nommage des classes de donnée (modele)
Classe correspondant à
| Correspondance | Règle de nommage |
|---|---|
| une table des BDDs | Dans ce cas le nom doit être celui de la classe pascal. Soit TSQL + nom de la table dans la base. Exemples : TSQLPersonne, TSQLFamille … Pour facilité le fichier s'appelle record + nom de la classe (a l'image du back). Il est stocké dans ngx-logeasweb-ui\src\lib\models\BDD\Nom bdd\ |
| à une classe interne au front | On préfixe le nom de la lettre T suivi d'un nom parlant. NB : on ne crée pas une classe copie d'une classe TSQL, si on a besoin d'ajouter des éléments on utilise l'héritage (extends) Exemple : TPersonnePlus extends TSQLPersonne { nomDeJeuneFille : string …} ou on ajoute une propriété à la classe de base calculée Exemple : getNomComplet(){return `${this.titre} ${this.prenom} ${this.nom}`} Si la classe est à usage unique du composant on pourra utiliser une Interface |
| classes dérivées pour affichage | En fait il ne s'agit pas de classe mais d'interface (pas de fonction de traitement). Le nommage se fait sur le nom de la table plus Grid Exemple : IPersonneGrid corresponds au type TSQLPersonne mis à plat pour usage dans la grille |
Les classes issues des BDDs (TSQL…)
Quelques règles génériques
- On ne charge pas ces classes directement depuis le code mais uniquement au travers des fonctions de la classe afin d'avoir des comportements homogènes
- Une classe NE DOIT PAS APPELER une autre classe de typage, si c'est le cas c'est le service qui doit le faire.
Exemple : pour effacer une famille il faut vérifier les personnes donc on devrait importer TSQPersonne dans recordFamille et réciproquement — on aurait doncTSQLFamillequi appelle une méthode deTSQLPersonneet réciproquement ⇒ à mettre dans un service.
Les fonctions « normées » correspondant au CRUD
| Opération | Fonction | Description |
|---|---|---|
| READ | chargeFromBDD$ | static async chargeFromBDD$(filtre:TSQLPersonne=new TSQLPersonne(), base?:TBaseLoGeAs) : Promise<TSQLPersonne[]> C'est la procédure qui doit se charger de toutes les transformations nécessaires après la réception (appel de la fonction générique mapArrayTo qui appelle corrigeDataFromBDD). static permet d'appeler la fonction sans instance de la classe. Exemple : this.personnes = await TSQLPersonne.chargeFromBDD$(); Le filtre permet de demander à la BDD un sous-ensemble de la table. Exemple : const filtre = new TSQLPersonne({Codepostal: “31800”}) ; this.personnes = await TSQLPersonne.chargeFromBDD$(filtre); → on ne devrait avoir que les personnes ayant un codepostal = 31800 (A TESTER) base peut être laissé vide si on utilise la base chargée dans DG, sinon il faut bien sûr l'indiquer (possibilité de charger une deuxième base) |
| CREATE / UPDATE | sauveToBDD$ | async sauveToBDD$(base?:TbaseLoGeAs) Permet de créer (ID=0) ou de mettre à jour l'objet instancié dans la base de données. Aucune préparation ne doit être faite avant, c'est la procédure qui s'en charge. base peut être laissé vide si on utilise la base chargée dans DG, sinon il faut bien sûr l'indiquer (possibilité de charger une deuxième base) |
| DELETE | effaceToBDD$ | async effaceToBDD$(ID:number, base?:TbaseLoGeAs) |
Nommage des classes de donnée (modèle)
Classe correspondant à une table des BDDs
| Élément | Règle | Exemple |
|---|---|---|
| Préfixe | TSQL + nom de la table | TSQLPersonne |
| Type | Classe représentant une table BDD | TSQLFamille |
| Nom du fichier | record + nom de la classe | recordTSQLPersonne |
| Emplacement | ngx-logeasweb-ui\src\lib\models\BDD\NomBDD\ | — |
—
Classe interne au front
| Règle | Description | Exemple |
|---|---|---|
| Préfixe | Lettre T suivie d’un nom parlant | TPersonnePlus |
| Extension | Utiliser l’héritage plutôt qu’une copie | extends TSQLPersonne |
| Propriété calculée | Ajouter une méthode de calcul | getNomComplet() |
| Usage unique | Utiliser une interface | Interface locale |
Exemple :
class TPersonnePlus extends TSQLPersonne {
nomDeJeuneFille: string;
}
Exemple propriété calculée :
getNomComplet() {
return `${this.titre} ${this.prenom} ${this.nom}`;
}
—
Classes dérivées pour affichage
| Type | Règle | Exemple |
|---|---|---|
| Nature | Interface uniquement (pas de logique) | — |
| Nommage | Nom de la table + Grid | IPersonneGrid |
| Utilisation | Type mis à plat pour une grille | DataGrid |
—
Les classes issues des BDDs (TSQL…)
Quelques règles génériques
| Règle | Description | |
|---|---|---|
| Chargement | Toujours via les fonctions de la classe | Comportement homogène |
| Couplage | Une classe ne doit pas appeler une autre classe métier | Utiliser un service |
| Logique transverse | Centralisée dans un service | Vérifications croisées |
Exemple interdit :
TSQLFamille appelle TSQLPersonne TSQLPersonne appelle TSQLFamille
⇒ À gérer dans un service
—
Fonctions normées correspondant au CRUD
READ
Nom de la fonction :
chargeFromBDD$
Signature :
static async chargeFromBDD$( filtre: TSQLPersonne = new TSQLPersonne(), base?: TBaseLoGeAs ): Promise<TSQLPersonne[]>
| Paramètre | Type | Description |
|---|---|---|
| filtre | Objet modèle | Permet de sélectionner un sous-ensemble |
| base | TBaseLoGeAs | Base alternative optionnelle |
Exemple :
this.personnes = await TSQLPersonne.chargeFromBDD$();
—
Utilisation du filtre
const filtre = new TSQLPersonne({
Codepostal: "31800"
});
this.personnes = await TSQLPersonne.chargeFromBDD$(filtre);
Résultat attendu :
* uniquement les personnes ayant le code postal 31800
—
CREATE / UPDATE
Nom de la fonction :
sauveToBDD$
Signature :
async sauveToBDD$(base?: TBaseLoGeAs)
| Cas | Condition | Action |
|---|---|---|
| Création | ID = 0 | Insertion en base |
| Mise à jour | ID ≠ 0 | Update en base |
| Préparation | Aucune | Gérée par la méthode |
—
DELETE
Nom de la fonction :
effaceToBDD$
Signature :
async effaceToBDD$( ID: number, base?: TBaseLoGeAs )
| Paramètre | Type | Description |
|---|---|---|
| ID | number | Identifiant de l'objet |
| base | TBaseLoGeAs | Base optionnelle |
—
Tableau récapitulatif du CRUD
| Opération | Méthode | Type | Description |
|---|---|---|---|
| READ | chargeFromBDD$ | static async | Charge une liste d'objets depuis la base |
| CREATE | sauveToBDD$ | async | Crée un objet |
| UPDATE | sauveToBDD$ | async | Met à jour un objet |
| DELETE | effaceToBDD$ | async | Supprime un objet |