|
Le modèle de données MED se base sur :
Les données modélisées sont des données destinées à être échangées entre codes de calcul au cours d'une étude, ces données portent sur les notions de :
Une étude correspond à un enchaînement de séquences de calculs effectué dans le cadre d'une simulation. Une étude s'appuie sur un ou plusieurs maillages. Elle aboutit à des résultats sur les maillages utilisés en entrée.
Le maillage fournit une représentation du domaine de calcul. A ce titre, un maillage contient les types d'informations suivants :
Un résultat est constitué d'un ensemble de valeurs définies sur les entités du maillage. Un résultat est constitué d'un ou plusieurs champs, les champs pouvant avoir plusieurs composantes (valeurs scalaires). Les champs peuvent être définis sur les :
Le modèle de données définit également la notion de variable scalaire numérique. Une variable scalaire numérique peut contenir une séquence de valeurs scalaires.
Les types de base attribués aux attributs internes des classes du modèle sont définis de la manière suivante :
Nous présentons dans cette section une vue d'ensemble du modéle de données MED. L'ensemble des données modélisées dans MED sont rassemblées dans le package englobant "MED : Modélisation et Echanges de Données" qui constitue le package racine du modèle.
Le schéma suivant fournit une vue d'ensemble des différents packages composant le modèle MED. Les différentes classes du modèle sont réparties entre divers packages. Des relations de dépendance apparaissent entre deux packages du modèle quand des classes issues de ces deux packages sont associées. Les packages portant le stéréotype "layer" ont un caractère uniquement descriptif qui permet d'illustrer le découpage logique des données du modèle et n'apparaissent que dans ce diagramme. Chacun des packages contient un ou plusieurs packages internes. Ce sont ces packages internes qui contiennent les diagrammes de classe du modèle. Chaque package interne sera détaillé dans la suite de la section 3.
Au sommet de la hiérarchie, le package "Etude" va regrouper l'ensemble des données échangées au cours d'une étude. Ces données d'étude sont définies dans les packages :
Le package "Maillage" donne accès à la description du domaine de calcul :
Les relations de dépendance entre ces différentes catégories de packages sont les suivantes :
Le package "Résultat" donne un "accès aux valeurs des résultats" qui portent sur les "Entités d'un maillage". L'accès à ces valeurs se fait par l'intermédiaire de séquences de valeurs qui sont décrites dans le package "Séquences de valeurs sur entité". Une "Séquence de valeurs sur entité" peut se voir associer les paramètres suivants :
Enfin le package "Variable scalaire numérique" fournit une description des données numériques scalaires qu'il est possible d'échanger. Ces données sont indépendantes des maillages mais peuvent se voir associer à une "Etape de calcul". On a donc une dépendance du package "Variable scalaire numérique" vers le package "Evolution temporelle".
A noter que les packages "Profil" et "Localisation des points de Gauss par élément" dépendent directement du package "Etude" car les informations définies dans ces packages peuvent être partagées par différentes séries de résultats.
Une étude correspond à un enchaînement de calculs. Une étude peut s'appuyer sur plusieurs maillages. Elle fournit des résultats sur ces maillages et éventuellement des valeurs numériques indépendantes des maillages.
Le package "Etude" ne contient qu'une seule classe, la classe "Etude". Un objet "Etude" est le conteneur logique de toutes les instances des classes du modèle d'échanges de données MED -i.e. il contient :
La classe "Etude" contient également des attributs spécifiques qui permettent de l'identifier (nom, date de dernière modification, auteur). Tous ces attributs sont des chaînes de caractères.
Un maillage doit contenir les informations utiles aux calculs d'une étude : informations géométriques, informations physiques :
On distingue dans MED, deux catégories de maillages :
Un maillage structuré est uniquement défini par ses noeuds. La connectivité entre les noeuds est de type (i,j,k) en 3D, (i,j) en 2D et (i) en 1D. Pour un axe donné (i, j ou k), on doit fournir un nombre de points qui permet spécifier un découpage régulier de l'axe.
La classe "Maillage" est la classe abstraite qui constitue la racine du package "Maillage". La classe Maillage comprend les attributs suivants :
Un objet maillage contient également :
La classe "Maillage" est spécialisée (par héritage) en deux classes :
La classe "Maillage non structuré" comporte l'attribut :
La classe "Maillage structuré" contient les attributs :
La classe "Grille cartésienne" contient l'attribut :
La classe "Grille polaire" contient l'attribut :
Un objet maillage structuré se voit associer de un à trois objets axe selon sa dimension. La classe "Axe" contient l'attribut :
Un noeud peut être le sommet d'une ou plusieurs arêtes, le milieu d'une arête ou un noeud isolé qui n'apparaît dans aucune connectivité.
La classe racine du package "Noeud" est la classe "Noeud" qui contient les attributs suivants :
Un noeud est associé à un point qui indique sa localisation spatiale. On a donc une association entre la classe "Noeud" et la classe abstraite "Point" qui se spécialise en fonction de la dimension de l'espace : le nombre de coordonnées d'un point dépend de la dimension de l'espace (1,2 ou 3). Les valeurs des coordonnées sont placées en attributs internes des classes "Point 1D", "Point 2D" et "Point 3D".
Les coordonnées sont exprimées selon un repère géométrique particulier (cartésien, cylindrique ou sphérique). La classe "Point" est donc associée à la classe "Repère". La classe "Repère" possède les attributs internes :
Les coordonnées associées au repère sont décrites dans la classe "Coordonnées" dont les attributs internes sont :
Les conditions limites ou initiales associées à un noeud sont placées dans une unique famille. Un noeud se retrouve donc associé à une unique famille.
Un maillage structuré est uniquement défini par ses noeuds. La connectivité entre les noeuds est de type (i,j,k) en 3D, (i,j) en 2D et (i) en 1D. Les conventions d'indexation, de numérotation des noeuds ainsi que le mode de définition des coordonnées d'une grille sont définies dans la section 5.
Dans le cas de maillage réparti sur plusieurs sous-domaines l'attribut optionnel "numero global" recevra le numéro du noeud par rapport au domaine global. Le support de maillages distribué est décrit dans la section Joints du guide utilisateur.
On trouve des mailles de dimension 0,1,2 ou 3. Une maille est décrite soit par connectivité nodale, soit par connectivité descendante :
La classe racine du package "Maille" est la classe abstraite "Maille" qui contient les attributs internes suivants :
Une association de la classe "Maille" vers la classe "Famille" permet d'accéder aux propriéts physiques de la maille.
La classe "Maille" est spécialisée (par héritage) en fonction de sa dimension, on a donc les classes "Maille 0D", "Maille 1D", "Maille 2D" et "Maille 3D". Chaque catégorie de maille est décrite dans un sous package spécifique.
Un maillage structuré est uniquement défini par ses noeuds. La définition de la connectivité des mailles d'un maillage structuré est implicite : cf la section 5.
Une maille de dimension 0 est réduite à un noeud.
La classe racine du package "Maille 0D" est la classe abstraite "Maille 0D". La connectivité d'une "Maille 0D" se réduit à un seul objet "Noeud". La classe "Maille 0D" se spécialise en classe "MED_MAILLE_POINT1".
En connectivité descendante ou nodale, une maille de dimension 1 est décrite par 2 sommets et éventuellement un noeud milieu.
Une "Maille 1D" est orientée. L'ordre dans lequel sont donnés les noeuds dans les deux types de connectivité définit une orientation implicite de la maille. Ces orientations sont fournies pour tous les types géométriques dans la section 4.
Les deux types géométrique de type "Maille 1D" sont :
La classe racine du package "Maille 1D" est la classe abstraite "Maille 1D". La connectivité d'un objet "Maille 1D" est décrite par deux ou trois objets "Noeud".
La classe "Maille 1D", se spécialise en fonction des deux types géométriques pré-cités en deux sous-classes : MED_MAILLE_SEG2 (segment à 2 noeuds) et MED_MAILLE_SEG3 (segment à 3 noeuds).
Les mailles de dimension 2 sont orientées. En connectivité descendante, les mailles de dimension 2 sont décrites par une liste ordonnée d'arêtes. Celles-ci sont précédées d'un signe qui indique l'orientation. En connectivité nodale, la liste des noeuds définit le sens de parcours. Ces orientations sont fournies pour tous les types géométriques dans la section 4.
Les cinq types géométriques possibles sont :
La classe racine de ce package est la classe abstraite "Maille 2D". Selon le mode de description de la connectivité, on accède à :
En connectivité descendante, les mailles de dimension 3 sont décrites par une liste ordonnée de faces, les faces étant elles-mêmes orientées. En connectivité nodale, les mailles de dimension 3 sont décrites par une liste ordonnée des noeuds qui les composent. Ces orientations sont fournies pour tous les types géométriques dans la section 4.
Les 9 types géométriques possibles sont :
La classe racine de ce package est la classe abstraite "Maille 3D". Selon le mode de description de la connectivité, on accède à :
Une face est une entité intermédiaire qui apparaît dans la connectivité descendante d'une maille 3D. Une face peut être triangulaire ou quadrangulaire.
De même que les mailles de dimension 2, les faces sont orientées. Elles sont décrites par leur connectivité descendante (liste ordonnée d'arêtes orientées).
Les 4 types possibles sont :
La classe racine de ce package est la classe abstraite "Face" qui contient les attributs internes suivants :
La connectivité d'une face étant forcément décrite selon le mode de connectivité descendante, on accède en fonction de la géométrie de la face à au moins 3 arêtes.
La classe "Face" est spécialisée par héritage selon les différents types géométriques possibles :
De même que pour les noeuds et les mailles, les propriétés physiques d'une face sont portées par une unique famille.
Un maillage structuré est uniquement défini par ses noeuds. La définition de la connectivité des faces d'un maillage structuré est implicite (cf. la section 5).
Une arête apparaît dans la connectivité descendante d'une maille surfacique ou d'une face. Elle est définie par un segment.
De même que les mailles de dimension 1, les arêtes sont orientées.
Les 2 types géométriques possibles sont :
La classe racine du package est la classe abstraite "Arête" qui contient les attributs internes suivants :
La connectivité d'un objet "Arête" est décrite par deux ou trois objets "Noeud".
La classe "Arête", se spécialise en fonction des deux types géométriques pré-cités en deux sous-classes :
De même que pour les noeuds, les mailles et les faces, les propriétés physiques d'une face sont portées par une unique famille.
Un maillage structuré est uniquement défini par ses noeuds. La définition de la connectivité des arêtes d'un maillage structuré est implicite (cf. la section 5).
Les familles constituent une partition de l'ensemble des entités du maillage : chaque entité du maillage (noeud, maille, face ou arête) appartient à une seule famille. Chaque famille repère des zones à particulariser pour le calcul : propriétés physiques, conditions aux limites, extraction des résultats, etc.
Un objet famille est identifié par son nom et son numéro. Une famille est décrite par un ensemble de paramètres (attributs) et par une liste de groupes auxquels les entités de la famille appartiennent.
Une famille donnée ne peut porter que sur un seul type d'entité, une famille est donc soit (exclusif) :
La classe racine du package "Famille" est la classe "Famille" qui comporte les attributs internes :
Le paramètre d'une famille est défini dans la classe "Attribut". Cette classe possède les attributs internes suivants :
Un groupe est défini dans la classe "Groupe" qui possède un seul attribut nom de type "Chaîne 80" et qui correspond au nom du groupe.
Un objet "Famille" peut contenir une référence à :
Une famille donnée ne pouvant porter les propriétés physiques que d'un seul type entité, on a donc une association exclusive de type "XOR" entre la classe "Famille" et
La notion d'équivalence permet de gérer des listes de correspondances mettant en relation deux entités de même type (deux noeuds, deux mailles, deux arêtes ou deux faces).
Une équivalence est identifiée par son nom et possède également une description.
La classe "Equivalence" possède les attributs internes suivants :
Un objet "Equivalence" possède de un à plusieurs objets instances de la classe "Correspondance".
La classe "Correspondance" permet d'associer des entités du maillage du même type, on a donc une association exclusive de type "XOR" entre la classe "Correspondance" et les classes :
La notion de joint permet de gérer des listes de correspondances mettant en relation deux entités (noeuds, mailles, arrêtes, faces) de type semblable ou non.
Un joint est identifié par son nom, possède également une description, et des informations permettant d'identifier le sous-domaine en regard, et les maillages local et distant mis en relation par ce joint.
La classe "Joint" possède les attributs internes suivants :
Un objet "Joint" possède obligatoirement un objet instance de la classe "Correspondance" associant des objets de type "sommets" et optionellement des objets instances de la classe "Correspondance entité", qui agrègent des listes d'entités en regard les unes des autres regroupées selon leur type.
La classe "Correspondance entité" permet d'associer des entités de maillage de type différent.
Un résultat est constitué d'un ensemble de champs, chaque champ pouvant lui-même être constitué de plusieurs composantes. Un champ est identifié par son nom et le type de ses composantes (entier ou réel). Les composantes correspondent à des valeurs scalaires (Exemple : un résultat peut être composé d'un champ PRESSION à 1 composante et d'un champ VITESSE à 3 composantes).
Les valeurs du champ sont réparties entre différentes séquences de valeurs. Ces valeurs portent sur les entités d'un ou plusieurs maillages.
La classe "Résultat" est la classe racine du package "Résultat". Un objet instance de la classe "Résultat" peut contenir de un à plusieurs objets instances de la classe "Champ".
La classe "Champ" contient les attributs internes :
La classe "Composante" comporte les attributs internes suivants :
L'accès aux valeurs d'un champ se fait par l'intermédiaire de séquences de valeurs qui peuvent porter sur les entités d'un ou plusieurs maillages.
Chaque séquence de valeurs peut se voir associer :
L'unique classe du package est la classe "Séquence de valeurs sur entité". Un objet instance de cette classe possède de :
On peut associer une valeur scalaire par composante du champ à :
La classe abstraite "Valeur sur entité" est la classe racine du package. Cette classe par héritage se spécialise selon le type d'entité sur lequel portent les valeurs des composantes du champ. Les classes dérivées sont les suivantes :
La classe "Valeur au noeud" permet d'associer une valeur scalaire par composante du champ à un noeud du maillage. Un objet "Valeur au noeud" contient donc de un à plusieurs objets "Valeur par composante" et porte une référence vers un objet "Noeud".
La classe "Valeur sur élément" permet d'associer une valeur scalaire par composante du champ :
La classe "Valeur par composante" comporte un attribut valeur de type "med_type_champ" qui correspond à une valeur numérique entière ou réelle.
Un profil désigne une liste d'entités d'un maillage (noeuds, mailles, faces ou arêtes).
La classe "profil" est classe racine de ce package. Cette classe comporte un attribut interne nom de type "Chaîne 32" qui permet d'identifier un objet profil.
La classe "Profil" permet de référencer des entités du maillage d'un type géométrique donné. On a donc une composition exclusive de type "XOR" entre la classe "Profil" et les classes définissant les différents types d'entité d'un maillage :
Une variable scalaire numérique correspond à une variable entière ou réelle non directement liée au domaine de calcul et donc indépendante de la notion de maillage.
Les valeurs numériques stockées dans ce type de variable peuvent être associées à une étape de calcul identifiée par un pas de temps et/ou un numéro d'ordre.
La classe "Variable scalaire numérique" est la classe racine de ce package. Cette classe a les attributs internes suivants :
La classe "Valeur scalaire" contient un attribut interne valeur de type "med_type_champ". Chaque objet valeur scalaire peut être associé à une étape de calcul identifiée par un objet pas de temps et/ou un objet numéro d'ordre.
Une étude correspond à un enchaînement de séquences de calcul. Le package "Evolution temporelle" fournit les éléments nécessaires à l'identification d'une étape de calcul :
Les pas de temps et numéros d'ordre sont utilisés pour identifier des étapes de calcul au sein des champs de résultats et les variables scalaires.
Le package "Evolution temporelle" contient les classes "Pas de temps" et "Numéro d'ordre".
La classe "Pas de temps" contient les attributs internes :
La classe "Numéro d'ordre" contient un unique attribut numéro qui correspond à un numéro d'itération.
Il est possible dans MED d'échanger des champs exprimés sur les points de Gauss des éléments. Ces points sont répartis au sein des éléments en des lieux différents selon les modélisations numériques utilisées. Pour chaque type de modélisation, il est possible de spécifier cette localisation sur des éléments de référence.
On distingue différentes familles de points de Gauss en fonction du nombre de points d'intégration. Chaque point d'intégration est localisé au sein d'un élément de référence par ses coordonnées et se voit associer un poids.
La localisation des points de Gauss pour un élément de référence nécessite donc de connaître :
La classe "Elément de référence aux points de Gauss" constitue la classe racine du package "Localisation des points de Gauss par type d'élément". Cette classe contient les attributs suivants :
Pour chaque élément de référence, il est possible :
La classe "Point de Gauss" contient un attribut interne poids de type Réel. Un objet "Point de Gauss" contient un objet noeud qui portent les coordonnées du point de Gauss.
Cette section décrit les connectivités de référence. Pour chaque type de maille, la connectivité de référence permet de reconstituer les arêtes et les faces des mailles (on donne la composition en noeuds des arêtes et la composition en arêtes des faces).
Arête | Sommet 1 | Sommet 2 |
---|---|---|
A1 | N1 | N2 |
Arête | Sommet 1 | Sommet 2 | Milieu |
---|---|---|---|
A1 | N1 | N2 | N3 |
Arête | Sommet 1 | Sommet 2 |
---|---|---|
A1 | N1 | N2 |
A2 | N2 | N3 |
A3 | N3 | N1 |
Arête | Sommet 1 | Sommet 2 | Milieu |
---|---|---|---|
A1 | N1 | N2 | N4 |
A2 | N2 | N3 | N5 |
A3 | N3 | N1 | N6 |
Arête | Sommet 1 | Sommet 2 |
---|---|---|
A1 | N1 | N2 |
A2 | N2 | N3 |
A3 | N3 | N4 |
A4 | N4 | N1 |
Arête | Sommet 1 | Sommet 2 | Milieu |
---|---|---|---|
A1 | N1 | N2 | N5 |
A2 | N2 | N3 | N6 |
A3 | N3 | N4 | N7 |
A4 | N4 | N1 | N8 |
Arête | Sommet 1 | Sommet 2 |
---|---|---|
A1 | N1 | N2 |
A2 | N2 | N3 |
A3 | N3 | N1 |
A4 | N1 | N4 |
A5 | N2 | N4 |
A6 | N3 | N4 |
Arête | Sommet 1 | Sommet 2 | Milieu |
---|---|---|---|
A1 | N1 | N2 | N5 |
A2 | N2 | N3 | N6 |
A3 | N3 | N1 | N7 |
A4 | N1 | N4 | N8 |
A5 | N2 | N4 | N9 |
A6 | N3 | N4 | N10 |
Face | Arête 1 | Arête 2 | Arête 3 |
---|---|---|---|
F1 | A1 | A2 | A3 |
F2 | A4 | -A5 | -A1 |
F3 | A5 | -A6 | -A2 |
F4 | A6 | -A4 | -A3 |
Arête | Sommet 1 | Sommet 2 |
---|---|---|
A1 | N1 | N2 |
A2 | N2 | N3 |
A3 | N3 | N4 |
A4 | N4 | N1 |
A5 | N1 | N5 |
A6 | N2 | N5 |
A7 | N3 | N5 |
A8 | N4 | N5 |
Arête | Sommet 1 | Sommet 2 | Milieu |
---|---|---|---|
A1 | N1 | N2 | N6 |
A2 | N2 | N3 | N7 |
A3 | N3 | N4 | N8 |
A4 | N4 | N1 | N9 |
A5 | N1 | N5 | N10 |
A6 | N2 | N5 | N11 |
A7 | N3 | N5 | N12 |
A8 | N4 | N5 | N13 |
Face | Arête 1 | Arête 2 | Arête 3 | Arête 4 |
---|---|---|---|---|
F1 | A1 | A2 | A3 | A4 |
F2 | A5 | -A6 | -A1 | _ |
F3 | A6 | -A7 | -A2 | _ |
F4 | A7 | -A8 | -A3 | _ |
F5 | A8 | -5 | -A4 | _ |
Arête | Sommet 1 | Sommet 2 |
---|---|---|
A1 | N1 | N2 |
A2 | N2 | N3 |
A3 | N3 | N4 |
A4 | N4 | N1 |
A5 | N5 | N6 |
A6 | N6 | N7 |
A7 | N7 | N8 |
A8 | N8 | N5 |
A9 | N1 | N5 |
A10 | N2 | N6 |
A11 | N3 | N7 |
A12 | N4 | N8 |
Arête | Sommet 1 | Sommet 2 |
---|---|---|
A1 | N1 | N2 |
A2 | N2 | N3 |
A3 | N3 | N4 |
A4 | N4 | N1 |
A5 | N5 | N6 |
A6 | N6 | N7 |
A7 | N7 | N8 |
A8 | N8 | N5 |
A9 | N1 | N5 |
A10 | N2 | N6 |
A11 | N3 | N7 |
A12 | N4 | N8 |
Arête | Sommet 1 | Sommet 2 | Milieu |
---|---|---|---|
A1 | N1 | N2 | N9 |
A2 | N2 | N3 | N10 |
A3 | N3 | N4 | N11 |
A4 | N4 | N1 | N12 |
A5 | N5 | N6 | N13 |
A6 | N6 | N7 | N14 |
A7 | N7 | N8 | N15 |
A8 | N8 | N5 | N16 |
A9 | N1 | N5 | N17 |
A10 | N2 | N6 | N18 |
A11 | N3 | N7 | N19 |
A12 | N4 | N8 | N20 |
Face | Arête 1 | Arête 2 | Arête 3 | Arête 4 |
---|---|---|---|---|
F1 | A1 | A2 | A3 | A4 |
F2 | -A8 | -A7 | -A6 | -A5 |
F3 | A9 | A5 | -A10 | -A1 |
F4 | A10 | A6 | -A11 | -A2 |
F5 | A11 | A7 | -A12 | -A3 |
F6 | A12 | A8 | -A9 | -A4 |
Arête | Sommet 1 | Sommet 2 |
---|---|---|
A1 | N1 | N2 |
A2 | N2 | N3 |
A3 | N3 | N1 |
A4 | N4 | N5 |
A5 | N5 | N6 |
A6 | N6 | N4 |
A7 | N1 | N4 |
A8 | N2 | N5 |
A9 | N3 | N6 |
Arête | Sommet 1 | Sommet 2 | Milieu |
---|---|---|---|
A1 | N1 | N2 | N7 |
A2 | N2 | N3 | N8 |
A3 | N3 | N1 | N9 |
A4 | N4 | N5 | N10 |
A5 | N5 | N6 | N11 |
A6 | N6 | N4 | N12 |
A7 | N1 | N4 | N13 |
A8 | N2 | N5 | N14 |
A9 | N3 | N6 | N15 |
Face | Arête 1 | Arête 2 | Arête 3 | Arête 4 |
---|---|---|---|---|
F1 | A1 | A2 | A3 | _ |
F2 | -A6 | -A5 | -A4 | _ |
F3 | A7 | A4 | -A8 | -A1 |
F4 | A8 | A5 | -A9 | -A2 |
F5 | A9 | A6 | -A7 | -A3 |
Les éléments considérés ont les propriétés suivantes :
Les polygones et les polyèdres peuvent apparaître dans un maillage MED issu d'un raccordement non conforme de deux maillages.
Un maillage structuré est uniquement défini par ses noeuds. La connectivité entre les noeuds est de type (i,j,k) en 3D, (i,j) en 2D et (i) en 1D : la connaissance des indices d'un noeud en donne la position relative. Nous adopterons le système d'indexation suivant pour ce type de maillage :
Par convention également, le noeud "origine" d'une grille a pour index (1,1,1) en 3D, (1,1) en 2D et (1) en 1D.
Voici par exemple le résultat obtenu pour une grille "5x3".
Dans un maillage structuré, la numérotation des noeuds et des éléments est implicite.
Considérons un maillage structuré 2D dont le premier axe comporte "n" points et le second axe "p" points :
Si on reporte cette convention de numérotation des noeuds et des éléments sur notre grille "5x3", on obtient :
Pour une grille cartésienne (MED_GRILLE_CARTESIENNE), le repère est cartésien. Pour une grille polaire (MED_GRILLE_POLAIRE), le repère est cylindrique.
Pour ces deux types de grilles, il est inutile de spécifier l'ensemble des coordonnées des noeuds du maillage, il suffit de décrire les coordonnées des points selon chacun des axes de la grille.
Par exemple, pour une grille cartésienne "5x3", il suffit de spécifier les coordonnées selon chacun des axes :
Les coordonnées de chaque noeud se déduisent ensuite en fonction de sa position (index) dans la grille. Par exemple le noeud d'index (2,3) et de numéro 12 a pour coordonnées X2,Y3.
Une classe est un modèle qui décrit des objets (instances). Une classe comporte des attributs internes. Les attributs d'une classe sont définis par un nom, un type et éventuellement une valeur initiale.
En UML, chaque classe est représentée par un rectangle divisée en compartiments. Le premier compartiment contient le nom de la classe. Le second compartiment contient la liste des attributs.
Une association décrit un lien entre deux classes d'objets :
Voici en UML, les types d'associations que nous venons de décrire.
Une agrégation est une association qui exprime un couplage fort entre deux classes. Une des classes (agrégat) joue un rôle dominant dans la relation : relation de type maître/esclave.
La notation UML pour définir une agrégation est la suivante.
Une composition est une agrégation avec une notion de couplage encore plus forte. La classe ayant le rôle dominant est appelée conteneur.
La composition implique une coïncidence des durées de vie des objets mis en relation :
La notation UML définissant une composition est la suivante.
L'héritage est un mécanisme de généralisation, par l'intermédiaire de ce mécanisme, une classe (la classe dérivée) récupère les propriétés (attributs) de la classe parent (classe de base).
Une classe de base peut être une classe abstraite (une classe abtraite n'est pas instanciable, elle ne peut pas donner naissance à un objet).
La notation UML pour définir un héritage en UML est la suivante. Par convention en UML, le nom d'une classe abstraite est en italique.
Les packages ou paquetages offrent un mécanisme de partition des classes. Les packages permettent de regrouper des classes ou d'autres packages dans un diagramme de classes. Une couche purement logique est définie par un package qui se voit associer le mot clé "layer".
Une relation de dépendance entre packages doit exister dès que deux éléments issus des deux packages différents sont associés. Une relation de dépendance est orientée du package "source" (client) vers le package "cible" (fournisseur).
En UML, un package est représenté graphiquement par un dossier.