Voila, ainsi tu définis un objet par ses caractéristiques pure.
Genre, imagine une classe " voiture"
dans cette classe, tu as des variables ( la taille, la cylindrée par exemple)
et tu as des méthodes, c´est a dire des fonctions qui ne marchent QUE pour une classe voiture :
genre avancer(), reculer(), tourner()
Ta voiture devient un objet. Quand tu crées une instance de voiture ( une nouvelle voiture), tu pourras la faire avancer, et faire ce qui est permis dessus, et pas ce qui n´est pas défini, tu ne pourras par exemple pas modifier les données membre ( dimensions, etc) privées, car celui qui aura écrit la classe n´aura pas prévu ça.
Autre façon de voir : imagine un circuit électronique compliqué : tu l´enferme dans une boite noire, mais de façon à ce qu´il soit IMPOSSIBLE de l´ouvrir par le programmeur qui utilise la classe.
Celui qui aura défini la classe aura construit l´intérieur, et créé des métbodes, cad des boutons sur la boite qui permettent de la faire fonctionner.
Interdisant de l´ouvrir, et n´ayant que le droit d´appuyer sur les boutons : le programmeur qui utilise une classe ( si elle est bien faite), ne pourra pas faire d´abérations a ce niveau.
ça engendre bcp moins d´erreurs de programmer objet, car tu manipules des objets de façon cohérente.