Un objeto es la instancia de una clase.
Existen 3 tipos de datos: primitivos, compuestos y abstractos
Los tipos de datos primitivos son los mas básicos: int, float, char, etc. Cada uno con diferentes propiedades dependiendo del lenguaje.
Un tipo de dato compuesto está formado por algunos datos primitivos, es decir son las estructuras. Es decir que al hacer una estructura estás haciendo un tipo de dato propio
Los tipos de datos abstractos son las clases. Al hacer una clase de igual forma que las estructuras estás haciendo un tipo de dato tuyo el cual puede ser instanciado. Los tipos de datos primitivos solo los puedes instanciar pero no modificar sus propiedades.
Por ejemplo:
struct Persona
{
char* nombres;
char* apellidos;
int edad;
};
he creado mi estructura, y ahora en el main la voy a instanciar, pudiendo hacer multiples instancias
void main()
{
Persona p1;
Persona p2;
int var1;
}
En el main he instanciado dos variables de tipo Persona (p1 y p2) que son tipos de datos struct y una variable de tipo entero (var1). Si ves como persona es como un tipo de dato, al igual que "int"
Ahora, el mismo ejemplo pero con clases:
class Persona
{
private:
char* nombre;
char* apellidos;
int edad;
public:
int getedad(){return edad;}
};
Un objeto es la instancia de una clase, es decir que si en el main yo pongo:
void main()
{
Persona p1;
cout<<p1.getedad();
}
p1 es el objeto y Persona es la clase. p1 es un dato de tipo Persona. Y Persona es un tipo de dato abstracto (una clase)
pd: la sintaxis está en C++, supongo que si recien empiezas a aprender programación orientada a objetos estás con C++, disculpa si por alli hay algun error de sintaxis ya que de C++ ya casi no me acuerdo