C++ Clase y objeto con ejemplo
¿Qué es una clase?
A C++ La clase combina datos y métodos para manipular los datos en uno. Las clases también determinan las formas de los objetos. Los datos y métodos contenidos en una clase se conocen como miembros de clase. Una clase es un tipo de datos definido por el usuario. Para acceder a los miembros de la clase, usamos una instancia de la clase. Puedes ver una clase como un modelo para un objeto.
Una clase puede ser un prototipo de una casa. Muestra la ubicación y los tamaños de puertas, ventanas, pisos, etc. A partir de estas descripciones, podemos construir una casa. La casa se convierte en el objeto. Es posible crear muchas casas a partir del prototipo. También es posible crear muchos objetos a partir de una clase.
En la figura anterior, tenemos un prototipo de casa unifamiliar. A partir de este prototipo hemos creado dos casas con características diferentes.
Declaración de clase
En C+, una clase se define utilizando la palabra clave class. Esto debe ir seguido del nombre de la clase. Luego, el cuerpo de la clase se agrega entre llaves { }.
Sintaxis
class class-name { // data // functions };
- El nombre de clase es el nombre que se asignará a la clase.
- Los datos son los datos de la clase, normalmente declarados como variables.
- Las funciones son las funciones de clase.
Palabras clave públicas y privadas
Debes haberte encontrado con estas dos palabras clave. Son modificadores de acceso.
- Privado:
Cuando la palabra clave privada se utiliza para definir una función o clase, se vuelve privada. Sólo se puede acceder a ellos desde dentro de la clase.
- Público:
La palabra clave pública, por otro lado, hace públicos los datos/funciones. Estos son accesibles desde fuera de la clase.
Definición de objeto
Los objetos se crean a partir de clases. Los objetos de clase se declaran de forma similar a como se declaran las variables. El nombre de la clase debe comenzar, seguido del nombre del objeto. El objeto del tipo de clase.
Sintaxis
class-name object-name;
- El nombre de clase es el nombre de la clase a partir de la cual se creará un objeto.
- El nombre del objeto es el nombre que se asignará al nuevo objeto.
Este proceso de creación de un objeto a partir de una clase se conoce como creación de instancias.
Acceso a miembros de datos
Para acceder a los miembros públicos de una clase, utilizamos el operador (.)punto. Estos son miembros marcados con el modificador de acceso público.
Ejemplo
#include <iostream> using namespace std; class Phone { public: double cost; int slots; }; int main() { Phone Y6; Phone Y7; Y6.cost = 100.0; Y6.slots = 2; Y7.cost = 200.0; Y7.slots = 2; cout << "Cost of Huawei Y6 : " << Y6.cost << endl; cout << "Cost of Huawei Y7 : " << Y7.cost << endl; cout << "Number of card slots for Huawei Y6 : " << Y6.slots << endl; cout << "Number of card slots for Huawei Y7 : " << Y7.slots << endl; return 0; }
Salida:
Aquí hay una captura de pantalla del código:
Explicación del código:
- Incluya el archivo de encabezado iostream en nuestro código para poder utilizar sus funciones.
- Incluyendo el espacio de nombres estándar en nuestro código para usar sus clases sin llamarlo.
- Declare una clase llamada Teléfono.
- Usar el modificador de acceso público para marcar las variables que estamos a punto de crear como de acceso público.
- Declarar el costo variable de un tipo de datos doble.
- Declare una variable entera llamada slots.
- Fin del cuerpo de la clase.
- Llamando a la función principal(). La lógica del programa debe agregarse dentro de su cuerpo.
- Cree un objeto llamado Y6 de tipo Teléfono. Esto se llama creación de instancias.
- Cree un objeto llamado Y7 de tipo Teléfono. Esto se llama creación de instancias.
- Acceda al costo variable/miembro de la clase Teléfono usando el objeto Y6. El valor se establece en 100.0. El coste de Y6 ahora está fijado en 100.0.
- Acceda a las ranuras de variables/miembros de la clase Teléfono usando el objeto Y6. El valor está establecido en 2. Las ranuras para Y6 ahora están configuradas en 2.
- Acceda al costo variable/miembro de la clase Teléfono usando el objeto Y7. El valor se establece en 200.0. El coste de Y7 ahora está fijado en 200.0.
- Acceda a las ranuras de variables/miembros de la clase Teléfono usando el objeto Y7. El valor está establecido en 2. Las ranuras para Y7 ahora están configuradas en 2.
- Imprime el costo de Y6 en la consola junto con otro texto.
- Imprime el costo de Y7 en la consola junto con otro texto.
- Imprima el número de ranuras para Y6 junto con otro texto.
- Imprima el número de ranuras para Y7 junto con otro texto.
- El programa debe devolver un valor al finalizar con éxito.
- Fin del cuerpo de la función main().
¿Qué es una clase privada?
Solo se puede acceder a los miembros de la clase marcados como privados mediante funciones definidas dentro de la clase. Cualquier objeto o función definido fuera de la clase no puede acceder a dichos miembros directamente. A un miembro de una clase privada solo se accede mediante funciones de miembro y amigo.
¿Qué es una clase protegida?
Los miembros de la clase marcados como protegidos tienen una ventaja sobre los marcados como privados. Se puede acceder a ellos mediante funciones dentro de la clase de su definición. Además, se puede acceder a ellos desde clases derivadas.
Ejemplo
#include <iostream> using namespace std; class ClassA { public: void set_a(int val); int get_a(void); private: int a; }; int ClassA::get_a(void) { return a; } void ClassA::set_a(int val) { a = val; } int main() { ClassA a; a.set_a(20); cout << "Value of a is: " << a.get_a(); return 0; }
Salida:
Aquí hay una captura de pantalla del código:
Explicación del código:
- Incluya el archivo de encabezado iostream en nuestro código para usar sus funciones.
- Incluya el espacio de nombres estándar en nuestro código para usar sus clases sin llamarlo.
- Crea una clase llamada ClassA.
- Utilice el modificador de acceso público para marcar el miembro de la clase que se creará como de acceso público.
- Cree la función denominada set_a() que toma un valor entero val.
- Cree una función llamada get_a().
- Utilice el modificador de acceso privado para marcar el miembro de la clase que se creará como de acceso privado.
- Declare una variable entera llamada a.
- Fin del cuerpo de la clase.
- Utilice el nombre de la clase y el operador de resolución de alcance para acceder a la función get_a(). Queremos definir qué hace la función cuando se invoca.
- La función get_a() debería devolver el valor de la variable a cuando se invoca.
- Fin de la definición de la función get_a().
- Utilice el nombre de la clase y el operador de resolución de alcance para acceder a la función set_a(). Queremos definir qué hace la función cuando se invoca.
- Asignando el valor de la variable val a la variable a.
- Fin de la definición de la función set_a().
- Llame a la función principal(). La lógica del programa debe agregarse dentro del cuerpo de esta función.
- Crea una instancia de ClassA y asígnale el nombre a.
- Utilice la instancia de clase anterior y la función set_a() para asignar un valor de 20 a la variable a.
- Imprimiendo algo de texto junto al valor de la variable a en la consola. El valor de la variable a se obtiene llamando a la función get_a().
- El programa debe devolver valor una vez completado con éxito.
- Fin del cuerpo de la función main().
Ejemplo
#include <iostream> using namespace std; class ParentClass { protected: int value; }; class ChildClass : public ParentClass { public: void setId(int x) { value = x; } void displayValue() { cout << "Value is: " << value << endl; } }; int main() { ChildClass c; c.setId(21); c.displayValue(); return 0; }
Salida:
Aquí hay una captura de pantalla del código:
Explicación del código:
- Incluya el archivo de encabezado iostream en nuestro código para usar sus funciones.
- Incluya el espacio de nombres estándar en nuestro código para usar sus clases sin llamarlo.
- Cree una clase llamada ParentClass.
- Utilice el modificador de acceso protegido para marcar el miembro de la clase que se creará como protegido.
- Cree una variable entera llamada valor.
- Fin del cuerpo de la clase.
- Cree una nueva clase llamada ChildClass que herede ParentClass.
- Utilice el modificador de acceso protegido para marcar el miembro de la clase que se creará como accesible para las clases secundarias.
- Cree la función denominada setId() que toma un valor entero x.
- Asignar el valor de la variable x al valor de la variable.
- Fin de la definición de la función setId().
- Cree una función llamada displayValue().
- Imprima el valor de la variable denominada valor en la consola junto con otro texto.
- Fin del cuerpo de la función displayValue().
- Fin del cuerpo de la clase denominada ChildClass.
- Llame a la función principal(). La lógica del programa debe agregarse dentro del cuerpo de esta función.
- Cree una instancia de ChildClass y asígnele el nombre c.
- Utilice la instancia de clase anterior y la función setId() para asignar un valor de 21 a la variable x.
- Utilice la instancia de clase anterior para llamar a la función denominada displayValue().
- El programa debe devolver valor una vez completado con éxito.
- Fin del cuerpo de la función main().
Funciones de los miembros de la clase
Las funciones nos ayudan a manipular datos. Las funciones de los miembros de la clase se pueden definir de dos maneras:
- Dentro de la definición de clase
- Fuera de la definición de clase
Si se debe definir una función fuera de una definición de clase, debemos utilizar el operador de resolución de ámbito (::). Este debe ir acompañado de los nombres de la clase y la función.
Ejemplo
#include <iostream> #include <string> using namespace std; class Guru99 { public: string tutorial_name; int id; void printname(); void printid() { cout << "Tutorial id is: "<< id; } }; void Guru99::printname() { cout << "Tutorial name is: " << tutorial_name; } int main() { Guru99 guru99; guru99.tutorial_name = "C++"; guru99.id = 1001; guru99.printname(); cout << endl; guru99.printid(); return 0; }
Salida:
Aquí hay una captura de pantalla del código:
Explicación del código:
- Incluya el archivo de encabezado iostream en nuestro programa para usar sus funciones.
- Incluya el archivo de encabezado de cadena en nuestro programa para usar sus funciones.
- Incluya el espacio de nombres estándar en nuestro código para usar sus clases sin llamarlo.
- Crea una clase llamada Guru99.
- Utilice el modificador de acceso público para marcar los miembros de la clase que estamos a punto de crear como accesibles públicamente.
- Cree una variable de cadena denominada nombre_tutorial.
- Cree una variable entera llamada id.
- Cree una función llamada printname(). Esta función no está definida dentro de la definición de clase.
- Cree una función llamada impresa(). Esta función se define dentro de la definición de clase. Su cuerpo se ha agregado dentro de la definición de clase.
- Imprima el valor de la identificación de la variable junto con otro texto en la consola. Tenga en cuenta que esto se ha agregado dentro del cuerpo de la función printid(). Solo se ejecutará cuando se llame a la función printid().
- Fin del cuerpo de la función printid().
- Fin del cuerpo de la clase Guru99.
- El inicio de la definición de la función printname().
- Imprima el valor de la variable nombre_tutorial en la consola junto con otro texto. Tenga en cuenta que esto se ha agregado dentro del cuerpo de la función printname(). Solo se ejecutará cuando se llame a la función printname().
- Fin de la definición de la función printname().
- Llame a la función principal(). La lógica del programa debe agregarse dentro del cuerpo de esta función.
- Cree una instancia de la clase Guru99 y asígnele el nombre guru99.
- Utilice la instancia anterior para asignar un valor de C++ a la variable nombre_tutorial.
- Utilice la instancia de guru99 para asignar un valor de 1001 a la identificación de la variable.
- Utilice la instancia guru99 para llamar a la función printname() .
- Llame al comando de fin (final de línea) para imprimir una nueva línea en blanco en la consola.
- Utilice la instancia guru99 para llamar a la función printid().
- El programa debe devolver valor una vez completado con éxito.
- Fin del cuerpo de la función main().
Constructores y Destructores
¿Qué son los constructores?
Las construcciones son funciones especiales que inicializan objetos. El C++ compiladores llama a un constructor al crear un objeto. Los constructores ayudan a asignar valores a los miembros de la clase. Por supuesto, esto es después de que se les haya asignado algo de espacio de memoria.
¿Qué son los destructores?
Los destructores, por otro lado, ayudan a destruir objetos de clase.
El nombre del constructor debe ser similar al nombre de la clase. Los constructores no tienen un tipo de devolución.
El constructor se puede definir dentro o fuera del cuerpo de la clase. Si se define fuera del cuerpo de la clase, se debe definir con el nombre de la clase y el operador de resolución de alcance (::).
Ejemplo
#include <iostream> using namespace std; class ClassA { public: ClassA() { cout << "Class constructor called"<<endl; } ~ClassA() { cout << "Class destructor called"<<endl; } }; int main() { ClassA a; int p = 1; if (p) { ClassA b; } }
Salida:
Aquí hay una captura de pantalla del código:
Explicación del código:
- Incluya el archivo de encabezado iostream en el código para usar sus funciones.
- Incluya el espacio de nombres estándar en nuestro código para usar sus clases sin llamarlo.
- Crea una clase llamada ClassA.
- Utilice el modificador de acceso público para marcar el miembro que estamos a punto de crear como de acceso público.
- Crea un constructor para la clase.
- Texto para imprimir en la consola cuando se llama al constructor. El final es un C++ palabra clave, que significa línea final. Mueve el cursor del mouse a la siguiente línea.
- Fin del cuerpo del constructor de clase.
- Crea un destructor para la clase.
- Texto que se imprimirá en la consola cuando se llame al destructor. El final es un C++ palabra clave, que significa línea final. Mueve el cursor del mouse a la siguiente línea.
- Fin del cuerpo del destructor.
- Fin del cuerpo de la clase.
- Llame a la función principal(). La lógica del programa debe agregarse dentro del cuerpo de esta función.
- Crea un objeto de clase y asígnale el nombre a. Se llamará al constructor.
- Cree una variable entera llamada p y asígnele un valor de 1.
- Cree un bloque de declaración if usando la variable p.
- Crea un objeto de clase y dale el nombre b. Se llamará al destructor.
- Fin del cuerpo de la declaración if.
- Fin del cuerpo de la función main().
Resumen
- C++ está orientado a objetos.
- Las clases forman las características principales de C++ que lo hacen orientado a objetos.
- A C++ La clase combina datos y métodos para manipular los datos en uno.
- Una clase es un modelo para un objeto.
- Las clases determinan la forma de un objeto.
- Los datos y métodos contenidos en una clase se conocen como miembros de clase.
- Para acceder a los miembros de la clase, debe utilizar una instancia de la clase.
- Para crear una clase, usamos la palabra clave class.
- Las funciones miembro de la clase se pueden definir dentro o fuera de una clase.