En Java, le terme type enregistrement n'existe pas, mais correspond à celui de classe sans méthodes définies. Le CNAM Paris a adopté ce terme pour des raisons historiques : il s'agit d'une notion ancienne, appelée en anglais record.

Motivation

Un objet enregistrement ressemble à un tableau :

Définition d'un type enregistrement

Définir un type enregistrement, c'est préciser : Avec cette notion, il est désormais possible dans ce cours NFA001 de définir nos propres types, alors que jusqu'ici nous nous contentions d'exploiter des types prédéfinis (types de base ou ceux du JDK).

En Java

La définition d'un type enregistrement nommé E s'écrit :
class E {
  T1 m1;
  T2 m2;
  ...
  Tn mn;
}
La liste des composantes peut être vide.
Exemple : le type enregistrement unePersonne suivant permet de représenter des personnes, caractérisées par leur nom, leur prénom, leur âge et le fait qu'elles portent ou pas des lunettes :
class unePersonne {
  String  sonNom;
  String  sonPrénom;
  int     sonAge;
  boolean porteDesLunettes;
}
Cette définition est écrite :

Définition d'un objet enregistrement

Comme pour les tableaux, il faut distinguer en Java la définition d'une nouvelle variable de type E de la création d'un nouvel objet de type E.

Définition d'une variable

La définition d'une variable appelée v de type E, un type enregistrement, éventuellement initialisée via une expression de calcul init, s'écrit de façon usuelle en Java :
définition sans initialisation :
E v;
la variable v est initialisée à null
définition avec initialisation :
E v = init;
la variable v est initialisée avec la référence de l'objet résultant de l'évaluation de l'expression init

Création d'un objet enregistrement

La création d'un nouvel objet enregistrement de type E passe par l'opérateur new :
new E()
Toutes les composantes du nouvel objet sont initialisées avec la valeur par défaut associée à leur type.
Exemple : le bloc suivant :
{
  unePersonne HenriSalvador = new unePersonne();
  unePersonne GadElmaleh;
}
définit deux variables d'un même type enregistrement unePersonne :

Accès aux composantes

Si E est un type enregistrement dont l'une des composantes porte le nom m, et v une variable de type E, alors l'accès à la composante m de v s'écrit :
v.m
Exemple : le bloc suivant :
{
  unePersonne HenriS = new unePersonne();
  HenriS.sonNom           = "SALVADOR";
  HenriS.sonPrénom        = "Henri";
  HenriS.sonAge           = 90;
  HenriS.porteDesLunettes = false;
  Terminal.ecrireStringln("objet personne '"+HenriS.sonPrénom+" "+HenriS.sonNom+"' créé.");
}
définit une variable dont l'objet unePersonne représente Henri Salvador, tous les champs étant initialisés après création de l'objet, et affiche à l'exécution :
objet personne 'Henri SALVADOR' créé.