| ||||
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 ![]() Última edición por Developer9; 12/08/2006 a las 09:36 Razón: faltó poner emoticón |
| |||
La explicacion de Developer9 es exelente(la primera que me agrada de el, jeje). yo quiero agregar una explicacion sin tantos conseptos. mira, la mayoria de los lenguajes tienen tipos de datos predeterminados, por ejemplo en C, tenemos char, int, long, ect. estos tipos ya estan definidos por el propio lenguaje, lo unico que tienens que hacer es crear variables del tipo que mas se adecue a tus datos a manejar. una caracteristica de estos tipos es que generalmente solo tienen una unica propiedad, su valor. por ejemplo; int a = 10; la propiedad del tipo int es el valor contenido. y tienen operadores sobrecargados, como son, =,==,+,-,*,/, etc. la mayoria de los tipos basicos o nativos usan estos, operadores. cuando quieres que tu variable tenga mas de una propiedad, tienes que crear un tipo compuesto, puede ser un array o una estructura. este tipo lo defines, con el numero y tipo de propiedades determinado, y despues ya puedes declarar y crear variables de este tipo. en C++ tambien puedes sobrecargar los operadores para tu tipo. en si esto es lo basico, solo que en POO(programacion orientada a objetos) se crean tipos que ademas de propiedades, tienen comportamiento(funciones mienbro). entonces declaras tu clase(en realidad es muy similar a la estructura) sus respectivas propiedades, y agregas determinado comportamiento. por ejemplo si tu clase es : class Perro { //las propiedades serian: private: char raza[20]; char nombre[20]; int edad; Color color; //etc. //su comportamiento seria. public: void ladrar(int veces); void comer(int gramos); void correr(int velo); //etc. como en C++ no hay una sintaxis para propiedades publicas, se usan metodos Get,Set. char* GetRaza(); char* GetNombre(); //etc. }; una vez que terminas de definir e implementar tu clase. ya tienes un tipo mas para usar. y creas tu variable u objeto en este caso ya que la variable es de un tipo clase. Perro buffy; buffy.ladrar(3); buffy.correr(20); //etc. bueno, todo esto para responder que no, una clase y un objeto no es lo mismo. una clase es la definicion de un tipo de dato abstracto. y un objeto es una variable de tipo clase. Saludos. |
| |||
No way. Aunque algunos lo llaman así, no tiene sentido en C++, porque una clase se representa igual en memoria que una estructura, y una estructura puede tener funciones, y una "clase abstracta" es la que sólo define funciones. Si una clase es un dato abstracto, una clase abstracta sería... unos datos super-abstractos? ;) Y las clases (Pero el resto lo has bordado, la primera vez que te veo explicar algo bien ;) |
| |||
es una pregunta? bueno, si lo es deberias decir para que lenguaje estas preguntando, porque hay algunos lenguajes en los que las clases son objetos tambien (instancias de otras clases llamadas metaclases, etc). tambien hay lenguajes que no tienen tipos, llamados no tipados. y tambien hay lenguajes que no tienen clases, llamados lenguajes prototipicos. y hay combinaciones de todo esto tambien. en fin, hay de todo. |