Cuando queremos desarrollar un programa con esta metodología orientada a objetos, hay que comenzar por definir la estructura de los objetos. Y cada una de estas estructuras es a lo que llamamos clase. Y una vez que hemos definido una clase (la clase "persona", por ejemplo) ya podemos comenzar a crear objetos de esa clase (el objeto "Alicia Arjona" o el objeto "David Martín"). Esto es como si quisiéramos construir 100 casas iguales. No vamos a empezar todo desde cero con cada una de ellas: primero creamos un esquema que represente la casa que queremos replicar 100 veces (y este esquema sería la clase) y después creamos las 100 casas basadas en dicho esquema (y cada una de estas 100 casas sería el equivalente a un objeto). La clase no es más que la descripción "teórica" de los objetos, incluyendo información sobre sus atributos y métodos. Cuando queremos crear un objeto de una clase lo que hacemos es "instanciar" la clase (crear una instancia de dicha clase) -el verbo instanciar no existe en español, pero a veces resulta más cómodo que decir "crear una instancia"-.
Una cosa importante es que tanto la clase como los objetos creados a partir de ella son "entes" con características propias: los objetos pueden tener atributos que se definen en la clase, pero la propia clase puede tener sus propios atributos. Veremos un ejemplo de esto más adelante.