# Type personnalisé

En programmation informatique, un type personnalisé (en:user-defined type), appelé parfois incorrectement type abstrait de données (en:abstract data type), est un type de données déclaré par le programmeur.
Un type personnalisé est généralement conçu en utilisant les types intrinsèques (en:built-in type) du langage de programmation et des personnalisés, incluant le type personnalisé en cours de déclaration.

## Catégories de type personnalisé

Parmi les façons de déclarer un type personnalisé, on retrouve les suivantes :
Exemples de type personnalisé :
| Catégorie de type personnalisé | Exemple en | Exemple en |
| Catégorie de type personnalisé | langage C | langage C++ |
| macro | //## Déclaration du type personnalisé. #define TNouveauType unsigned long int //** Définition d'une variable //** à partir du type personnalisé. TNouveauType MaVariable; | //## Déclaration du type personnalisé. #define TNouveauType unsigned long int //** Définition d'une variable //** à partir du type personnalisé. TNouveauType MaVariable; |
| type déclaré (en) | //## Déclaration du type personnalisé. typedef unsigned long int TNouveauType //** Définition d'une variable //** à partir du type personnalisé. TNouveauType MaVariable; | //## Déclaration du type personnalisé. typedef unsigned long int TNouveauType //** Définition d'une variable //** à partir du type personnalisé. TNouveauType MaVariable; |
| structure [de données] (en) | //## Déclaration du type personnalisé. struct TNouveauType { unsigned long int Numero; char Nom[30]; float Salaire; } //** Définition d'une variable //** à partir du type personnalisé. struct TNouveauType MaVariable; | //## Déclaration du type personnalisé. struct TNouveauType { unsigned long int Numero; char Nom[30]; float Salaire; } //** Définition d'une variable //** à partir du type personnalisé. TNouveauType MaVariable; |
| union [de données] (en) | //## Déclaration du type personnalisé. union TNouveauType { unsigned long int Numero; char Octets[8]; float Salaire; } //** Définition d'une variable //** à partir du type personnalisé. union TNouveauType MaVariable; | //## Déclaration du type personnalisé. union TNouveauType { unsigned long int Numero; char Octets[8]; float Salaire; } //** Définition d'une variable //** à partir du type personnalisé. TNouveauType MaVariable; |
| liste énumérative | //## Déclaration du type personnalisé. enum TNouveauType { ccSphere, ccCube, ccPyramide, ccTetraedre }; //** Définition d'une variable //** à partir du type personnalisé. enum TNouveauType MaVariable; | //## Déclaration du type personnalisé. enum TNouveauType { ccSphere, ccCube, ccPyramide, ccTetraedre }; //** Définition d'une variable //** à partir du type personnalisé. TNouveauType MaVariable; |
| classe [d'objets] | inexistant | //## Déclaration du type personnalisé. class TNouveauType { private: unsigned long int Numero; protected: char Nom[30]; float Salaire; public: int LireNumero; } //** Définition d'une variable //** à partir du type personnalisé. TNouveauType MaVariable; |

## Source

* Mathieu Nebra, « Créez vos propres types de variables », sur www.sbras.ru (consulté le 6 juin 2016).
* (en) « User-Defined Types », sur www.sbras.ru (consulté le 6 juin 2016).
* (en) Bjarne Stroustrup, The C++ Programming Language, New York, Addison-Wesley
* (en) Bjarne Stroustrup, A Tour of C++, New York, Addison-Wesley, janvier 2015, 181 p. (ISBN 978-0-321-95831-0)
* (en) Bjarne Stroustrup, Programming : Principles and Practice Using C++, New York, Addison-Wesley, janvier 2015, 1274 p. (ISBN 978-0-321-99278-9)