La programación orientada a objetos define clases y objetos. Una clase especifica los atributos y métodos de un objeto, mientras que un objeto es una instancia concreta de una clase. Las clases se relacionan entre sí a través de herencia, donde una subclase hereda atributos y métodos de su superclase. El polimorfismo permite que métodos con el mismo nombre tengan comportamientos diferentes dependiendo de la clase del objeto.