Classe, objet, constructeur
public class Participant { private String nom; // attribut (encapsulé) private String email; public Participant(String nom, String email) { // constructeur this.nom = nom; this.email = email; } public String getNom() { return nom; } // getter } Participant p = new Participant("Ada", "ada@ex.fr");
Encapsulation
On rend les attributs private et on contrôle l'accès par des getters/setters publics. Cela protège l'état de l'objet (validation, invariants).
public void setLitres(int litres) { if (litres <= 0) throw new IllegalArgumentException("litres > 0"); this.litres = litres; // on garantit un volume valide }
Héritage & polymorphisme
extends réutilise et spécialise une classe ; la redéfinition (@Override) permet le polymorphisme.
public abstract class Personne { protected String nom; public abstract String role(); // méthode abstraite } public class Coordinateur extends Personne { @Override public String role() { return "Coordinateur"; } }
Interfaces et enum
Une interface est un contrat (méthodes sans corps) que des classes implémentent. Un enum énumère des valeurs fixes.
public interface Facturable { BigDecimal montant(); } public enum Statut { OUVERTE, CLOTUREE, ANNULEE }
Tout le domaine fioul se modélise en classes Java : Participant, Fournisseur, Campagne (avec un enum Statut et une liste de Commande), Commande. Ces classes sont exactement celles que le parcours Spring annotera @Entity pour les persister. La POO d'aujourd'hui, ce sont les entités de demain.
- Une classe décrit des objets (attributs + méthodes) ; new instancie.
- Encapsulation : attributs private + getters/setters qui valident.
- Héritage (extends) + @Override = polymorphisme ; abstract pose un modèle.
- Interface = contrat multi-implémentable ; enum = valeurs fixes (Statut).