Un discriminant peut avoir un nombre quelconque d'attributs ou aucun. Les attributs décrivent une valeur ou un intervalle de valeurs que les instances du discriminant peuvent gérer. Vous pouvez spécifier le type d'un attribut, par exemple entier ou booléen, et sa valeur initiale. Vous pouvez aussi rattacher une contrainte à un attribut pour définir l'intervalle de valeurs qu'il gère.
Les noms d'attribut sont des noms courts ou des phrases nominales décrivant l'attribut. La syntaxe UML d'un nom d'attribut intègre des informations en plus de son nom, telle que la visibilité, le type et la valeur initiale de l'attribut, comme le montre l'exemple suivant.
visibilité «stéréotype» nom : expression-de-type = valeur-initiale
Dans une application de commerce électronique, une classe Client est dotée d'un attribut qui gère le montant du solde du client, comme le montre l'exemple suivant.
- balance : MoneyType = 0.00