Section courante

A propos

Section administrative du site

Attributs

Un attribut (appelé aussi champ, propriété ou variable membre) est une donnée appartenant à une classe, et donc à chacun de ses objets.

L'attribut représente l'état interne d'un objet.

Exemples d'attributs :

Attributs et état de l'objet

L'état d'un objet est défini par l'ensemble des valeurs de ses attributs à un instant donné.

  1. class Compte {
  2.     double solde;
  3. }

Deux objets de la même classe peuvent avoir des états différents.

Attributs vs variables locales

Attribut Variable locale
Appartient à l'objet Appartient à une méthode
Durée de vie = objet Durée de vie = méthode
Accessible via this Accessible directement
Représente l'état Représente un calcul temporaire

Déclaration des attributs

Exemple générique :

  1. class Utilisateur {
  2.     String nom;
  3.     int age;
  4. }

Chaque instance de Utilisateur possède sa propre copie des attributs.

Attributs d'instance vs attributs de classe

Attributs d'instance

  1. class Compte {
  2.     double solde;
  3. }

Attributs de classe (statique)

  1. class Compte {
  2.     static double tauxInteret;
  3. }

Il n'existe qu'une seule valeur de tauxInteret.

Visibilité des attributs

Modificateurs d'accès :

Modificateur Description
private Accessible uniquement dans la classe
protected Classe + sous-classes
public Accessible partout

Bonne pratique : les attributs doivent presque toujours être private.

Encapsulation et attributs

L'encapsulation consiste à cacher les attributs et à contrôler leur accès.

  1. class Personne {
  2.     private int age;
  3.  
  4.     public void setAge(int age) {
  5.         if (age >= 0) {
  6.             this.age = age;
  7.         }
  8.     }
  9.  
  10.     public int getAge() {
  11.         return age;
  12.     }
  13. }

L'objet reste cohérent.

Getters et setters

Rôle :

  1. public String getNom() { return nom; }
  2. public void setNom(String nom) { this.nom = nom; }

Un setter n'est pas obligatoire : certains attributs sont en lecture seulement.

Attributs immuables

Un attribut peut être immuable (non modifiable après initialisation).

  1. class Utilisateur {
  2.     private final String id;
  3. }

Initialisation des attributs

Valeurs par défaut

Type Valeur
int 0
double 0.0
boolean false
objet null

Initialisation via constructeur

  1. class Voiture {
  2.     private String marque;
  3.  
  4.     public Voiture(String marque) {
  5.         this.marque = marque;
  6.     }
  7. }

Attributs calculés

Un attribut peut être dérivé d'autres attributs.

  1. public double getPrixTTC() {
  2.     return prixHT * 1.2;
  3. }

Il n'est pas entreposé, mais calculé à la demande.

Attributs et héritage

Les sous-classes héritent des attributs non privés.

  1. class Animal {
  2.     protected int age;
  3. }
  4.  
  5. class Chien extends Animal {
  6.     void afficherAge() {
  7.         System.out.println(age);
  8.     }
  9. }

Masquage d'attributs (à éviter)

  1. class A {
  2.     int x;
  3. }
  4.  
  5. class B extends A {
  6.     int x;
  7. }

Attributs et polymorphisme

Contrairement aux méthodes, les attributs ne sont pas polymorphes.

  1. Animal a = new Chien();

Toujours accéder aux attributs via des méthodes.

Attributs et composition

  1. class Commande {
  2.     private Client client;
  3. }

Attributs et UML

Notation UML :

Symbole Signification
+ public
- private
# protected

Bonnes pratiques

Exemple complet

  1. class CompteBancaire {
  2.     private final String numero;
  3.     private double solde;
  4.  
  5.     public CompteBancaire(String numero) {
  6.         this.numero = numero;
  7.         this.solde = 0;
  8.     }
  9.  
  10.     public void deposer(double montant) {
  11.         if (montant > 0) solde += montant;
  12.     }
  13.  
  14.     public double getSolde() {
  15.         return solde;
  16.     }
  17. }

Attributs et SOLID

Conclusion

Les attributs représentent la mémoire et l'état des objets.

Bien conçus, ils rendent les objets robustes, cohérents et maintenables.

En POO, on ne manipule pas des données brutes, mais des états protégés par des comportements.



Dernière mise à jour : Jeudi, le 1er janvier 2026