Documentation de la bibliothèque MED-fichier V2.3 : Modèle de données


Sommaire de la rubrique
  1. Introduction
  2. Dictionnaire
  3. Modèle de données
  4. Conventions pour les maillages non structurés : connectivités de référence
  5. Conventions pour les maillages structurés
  6. Conventions et notations UML employées

1. Introduction

Présentation de la démarche de modélisation

Le modèle de données MED se base sur :

Présentation rapide des données modélisées

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 :

On distingue parmi les maillages, les maillages structurés des maillages non structurés.

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 :

Ils peuvent n'être définis que sur une partie du maillage.

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.

2. Dictionnaire

3. Modèle de données

Types de base

Les types de base attribués aux attributs internes des classes du modèle sont définis de la manière suivante :

Vue d'ensemble

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 :

On a donc une dépendance du package "Etude" vers ces trois 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 :

Les valeurs du résultat correspondant à la "Séquence de valeurs sur entité" sont décrites dans le package "Valeur sur entité" et sont associées à des entités d'un ou plusieurs maillages. On a donc une dépendance du package "Séquence de valeurs sur entité" vers le package "Valeur sur entité" et du package "Valeur sur entité" vers le package "Entités d'un maillage".

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.

Package "Etude"

Description

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.

Diagramme de classe

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.

Package "Maillage"

Description

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 :

  1. Les maillages non structurés,
  2. Les maillages structurés (grille cartésienne, grille polaire et standard).

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.

Diagramme de classe

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 :

  1. "Maillage non structuré",
  2. "Maillage structuré".
La classe "Maillage structuré" se dérive elle-même en deux nouvelles classes
  1. "Grille cartésienne",
  2. "Grille polaire".

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 :

Package "Noeud"

Description

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é.

Diagramme de classe

La classe racine du package "Noeud" est la classe "Noeud" qui contient les attributs suivants :

Les deux premiers attributs permettent d'identifier le noeud dans le maillage. Dans le cas où ce maillage est une partie d'un maillage distribué sur plusieurs sous-domaines, le troisième attribut - numéro global - permet de repérer le noeud de manière unique sur le domaine global.

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.

Cas spécifique des maillages structurés

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.

Cas spécifique des maillages distribués

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 ???.

Package "Maille"

Description

On trouve des mailles de dimension 0,1,2 ou 3. Une maille est décrite soit par connectivité nodale, soit par connectivité descendante :

Au même titre que pour les noeuds, les conditions limites ou initiales associées à une maille sont placées dans une unique famille.

Diagramme de classe

La classe racine du package "Maille" est la classe abstraite "Maille" qui contient les attributs internes suivants :

Les deux premiers attributs permettent d'identifier la maille dans le maillage. Dans le cas, ou ce maillage est une partie d'un maillage distribué sur plusieurs sous-domaines, le troisième attribut - numéro global - permet de repérer la maille de manière unique sur le domaine global.

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.

Cas spécifique des maillages structurés

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.

Sous package "Maille 0D"

Description

Une maille de dimension 0 est réduite à un noeud.

Diagramme de classe

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".

Sous package "Maille 1D"

Description

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 :

  1. Les segments à 2 noeuds.
  2. Les segments à 3 noeuds.

Diagramme de classe

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).

Sous package "Maille 2D"

Description

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 :

  1. Les triangles à 3 noeuds.
  2. Les triangles à 6 noeuds.
  3. Les quadrangles à 4 noeuds.
  4. Les quadrangles à 8 noeuds.
  5. Les polygones quelconques.

Diagramme de classe

La classe racine de ce package est la classe abstraite "Maille 2D". Selon le mode de description de la connectivité, on accède à :

La classe "Maille 2D" est spécialisée par héritage selon les différents types géométriques possibles :

Sous package "Maille 3D"

Description

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 :

  1. Les tétraèdres à 4 noeuds.
  2. Les tétraèdres à 10 noeuds.
  3. Les pyramides à 5 noeuds.
  4. Les pyramides à 13 noeuds.
  5. Les hexaèdres à 8 noeuds.
  6. Les héxaèdres à 20 noeuds.
  7. Les pentaèdres à 6 noeuds.
  8. Les pentaèdres à 15 noeuds.
  9. Les polyèdres quelconques.

Diagramme de classe

La classe racine de ce package est la classe abstraite "Maille 3D". Selon le mode de description de la connectivité, on accède à :

La classe "Maille 3D" est spécialisée par héritage selon les différents types géométriques possibles :

Package "Face"

Description

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 :

  1. Les triangles à 3 noeuds.
  2. Les triangles à 6 noeuds.
  3. Les quadrangles à 4 noeuds.
  4. Les quadrangles à 8 noeuds.
  5. Les polygones quelconques.

Diagramme de classe

La classe racine de ce package est la classe abstraite "Face" qui contient les attributs internes suivants :

Les deux premiers attributs permettent d'identifier la face. Dans le cas où ce maillage est une partie d'un maillage distribué sur plusieurs sous-domaines, le troisième attribut - numéro global - permet de repérer la face de manière unique sur le domaine global.

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.

Cas spécifique des maillages structurés

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).

Package "Arête"

Description

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 :

Diagramme de classe

La classe racine du package est la classe abstraite "Arête" qui contient les attributs internes suivants :

Ces deux attributs permettent d'identifier une arête. Dans le cas où ce maillage est une partie d'un maillage distribué sur plusieurs sous-domaines, le troisième attribut - numéro global - permet de repérer l'arête de manière unique sur le domaine global.

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.

Cas spécifique des maillages structurés

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).

Package "Famille"

Description

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) :

Diagramme de classe

La classe racine du package "Famille" est la classe "Famille" qui comporte les attributs internes :

Ces 2 attributs permettent d'identifier une famille.

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 à :

A noter qu'un objet groupe ou attribut peut être référencé par plusieurs familles.

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

Package "Equivalence"

Description

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.

Diagramme de classe

La classe "Equivalence" possède les attributs internes suivants :

Le nom permet d'identifier un objet équivalence.

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 :

Package "Joint"

Description

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.

Diagramme de classe

La classe "Joint" possède les attributs internes suivants :

Le nom permet d'identifier un objet joint.

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.

Package Résultat

Description

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.

Diagramme de classe

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 :

Un objet "Champ" contient de : L'attribut "nom" permet d'identifier un objet champ.

La classe "Composante" comporte les attributs internes suivants :

Package "Séquence de valeurs sur entité"

Description

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 :

Diagramme de classe

L'unique classe du package est la classe "Séquence de valeurs sur entité". Un objet instance de cette classe possède de :

Package "Valeur sur entité"

Description

On peut associer une valeur scalaire par composante du champ à :

Diagramme de classe

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 :

De plus un objet "Valeur sur élément" porte une référence vers un objet élément d'un maillage ("Maille", "Face" ou "Arête").

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.

Package "Profil"

Description

Un profil désigne une liste d'entités d'un maillage (noeuds, mailles, faces ou arêtes).

Diagramme de classe

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 :

Package "Variable scalaire numérique"

Description

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.

Diagramme de classe

La classe "Variable scalaire numérique" est la classe racine de ce package. Cette classe a les attributs internes suivants :

Un objet instance de la classe variable scalaire numérique possède de un à plusieurs objets valeur scalaire.

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.

Package "Evolution temporelle"

Description

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.

Diagramme de classe

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.

Package "Localisation des points de Gauss par type d'élément"

Description

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 :

Diagramme de classe

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.

4. Conventions les maillages non structurés : Connectivités de référence

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).

Les segments

Les triangles

Les quadrangles

Les tétraèdres

Les pyramides

Les hexaèdres

Les pentaèdres

Les polygones et polyèdres quelconques

Les éléments considérés ont les propriétés suivantes :

  1. L'élément est fermé et borné.
  2. L'élément est connexe.
  3. Les sommets de l'élément sont distincts.
  4. L'élément n'est pas dégénéré (volume/surface non nul(le)).

Les polygones et les polyèdres peuvent apparaître dans un maillage MED issu d'un raccordement non conforme de deux maillages.

5. Conventions pour les maillages structurés

Indexation d'une grille

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".

Numérotation des noeuds et des éléments d'une grille

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 :

Définition des coordonnées des noeuds d'une grille polaire ou cartésienne

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.

6. Conventions et notations UML employées

Classe et attribut de classe

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.

Association

Une association décrit un lien entre deux classes d'objets :

Voici en UML, les types d'associations que nous venons de décrire.

Agrégation

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.

Composition

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 :

D'autre part, la valeur maximum de la multiplicité du côté du conteneur ne doit pas excéder 1.

La notation UML définissant une composition est la suivante.

Héritage

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.

Package

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.