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.

C++ 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:

Acceso a miembros de datos

Aquรญ hay una captura de pantalla del cรณdigo:

Acceso a miembros de datos

Explicaciรณn del cรณdigo:

  1. Incluya el archivo de encabezado iostream en nuestro cรณdigo para poder utilizar sus funciones.
  2. Incluyendo el espacio de nombres estรกndar en nuestro cรณdigo para usar sus clases sin llamarlo.
  3. Declare una clase llamada Telรฉfono.
  4. Usar el modificador de acceso pรบblico para marcar las variables que estamos a punto de crear como de acceso pรบblico.
  5. Declarar el costo variable de un tipo de datos doble.
  6. Declare una variable entera llamada slots.
  7. Fin del cuerpo de la clase.
  8. Llamando a la funciรณn principal(). La lรณgica del programa debe agregarse dentro de su cuerpo.
  9. Cree un objeto llamado Y6 de tipo Telรฉfono. Esto se llama creaciรณn de instancias.
  10. Cree un objeto llamado Y7 de tipo Telรฉfono. Esto se llama creaciรณn de instancias.
  11. 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.
  12. 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.
  13. 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.
  14. 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.
  15. Imprime el costo de Y6 en la consola junto con otro texto.
  16. Imprime el costo de Y7 en la consola junto con otro texto.
  17. Imprima el nรบmero de ranuras para Y6 junto con otro texto.
  18. Imprima el nรบmero de ranuras para Y7 junto con otro texto.
  19. El programa debe devolver un valor al finalizar con รฉxito.
  20. 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:

Acceso a miembros de datos

Aquรญ hay una captura de pantalla del cรณdigo:

Acceso a miembros de datos

Explicaciรณn del cรณdigo:

  1. Incluya el archivo de encabezado iostream en nuestro cรณdigo para usar sus funciones.
  2. Incluya el espacio de nombres estรกndar en nuestro cรณdigo para usar sus clases sin llamarlo.
  3. Crea una clase llamada ClassA.
  4. Utilice el modificador de acceso pรบblico para marcar el miembro de la clase que se crearรก como de acceso pรบblico.
  5. Cree la funciรณn denominada set_a() que toma un valor entero val.
  6. Cree una funciรณn llamada get_a().
  7. Utilice el modificador de acceso privado para marcar el miembro de la clase que se crearรก como de acceso privado.
  8. Declare una variable entera llamada a.
  9. Fin del cuerpo de la clase.
  10. 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.
  11. La funciรณn get_a() deberรญa devolver el valor de la variable a cuando se invoca.
  12. Fin de la definiciรณn de la funciรณn get_a().
  13. 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.
  14. Asignando el valor de la variable val a la variable a.
  15. Fin de la definiciรณn de la funciรณn set_a().
  16. Llame a la funciรณn principal(). La lรณgica del programa debe agregarse dentro del cuerpo de esta funciรณn.
  17. Crea una instancia de ClassA y asรญgnale el nombre a.
  18. Utilice la instancia de clase anterior y la funciรณn set_a() para asignar un valor de 20 a la variable a.
  19. 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().
  20. El programa debe devolver valor una vez completado con รฉxito.
  21. 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:

Acceso a miembros de datos

Aquรญ hay una captura de pantalla del cรณdigo:

Acceso a miembros de datos

Explicaciรณn del cรณdigo:

  1. Incluya el archivo de encabezado iostream en nuestro cรณdigo para usar sus funciones.
  2. Incluya el espacio de nombres estรกndar en nuestro cรณdigo para usar sus clases sin llamarlo.
  3. Cree una clase llamada ParentClass.
  4. Utilice el modificador de acceso protegido para marcar el miembro de la clase que se crearรก como protegido.
  5. Cree una variable entera llamada valor.
  6. Fin del cuerpo de la clase.
  7. Cree una nueva clase llamada ChildClass que herede ParentClass.
  8. Utilice el modificador de acceso protegido para marcar el miembro de la clase que se crearรก como accesible para las clases secundarias.
  9. Cree la funciรณn denominada setId() que toma un valor entero x.
  10. Asignar el valor de la variable x al valor de la variable.
  11. Fin de la definiciรณn de la funciรณn setId().
  12. Cree una funciรณn llamada displayValue().
  13. Imprima el valor de la variable denominada valor en la consola junto con otro texto.
  14. Fin del cuerpo de la funciรณn displayValue().
  15. Fin del cuerpo de la clase denominada ChildClass.
  16. Llame a la funciรณn principal(). La lรณgica del programa debe agregarse dentro del cuerpo de esta funciรณn.
  17. Cree una instancia de ChildClass y asรญgnele el nombre c.
  18. Utilice la instancia de clase anterior y la funciรณn setId() para asignar un valor de 21 a la variable x.
  19. Utilice la instancia de clase anterior para llamar a la funciรณn denominada displayValue().
  20. El programa debe devolver valor una vez completado con รฉxito.
  21. 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:

Funciones de los miembros de la clase

Aquรญ hay una captura de pantalla del cรณdigo:

Funciones de los miembros de la clase

Explicaciรณn del cรณdigo:

  1. Incluya el archivo de encabezado iostream en nuestro programa para usar sus funciones.
  2. Incluya el archivo de encabezado de cadena en nuestro programa para usar sus funciones.
  3. Incluya el espacio de nombres estรกndar en nuestro cรณdigo para usar sus clases sin llamarlo.
  4. Crea una clase llamada Guru99.
  5. Utilice el modificador de acceso pรบblico para marcar los miembros de la clase que estamos a punto de crear como accesibles pรบblicamente.
  6. Cree una variable de cadena denominada nombre_tutorial.
  7. Cree una variable entera llamada id.
  8. Cree una funciรณn llamada printname(). Esta funciรณn no estรก definida dentro de la definiciรณn de clase.
  9. 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.
  10. 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().
  11. Fin del cuerpo de la funciรณn printid().
  12. Fin del cuerpo de la clase Guru99.
  13. El inicio de la definiciรณn de la funciรณn printname().
  14. 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().
  15. Fin de la definiciรณn de la funciรณn printname().
  16. Llame a la funciรณn principal(). La lรณgica del programa debe agregarse dentro del cuerpo de esta funciรณn.
  17. Cree una instancia de la clase Guru99 y asรญgnele el nombre guru99.
  18. Utilice la instancia anterior para asignar un valor de C++ a la variable nombre_tutorial.
  19. Utilice la instancia de guru99 para asignar un valor de 1001 a la identificaciรณn de la variable.
  20. Utilice la instancia guru99 para llamar a la funciรณn printname() .
  21. Llame al comando de fin (final de lรญnea) para imprimir una nueva lรญnea en blanco en la consola.
  22. Utilice la instancia guru99 para llamar a la funciรณn printid().
  23. El programa debe devolver valor una vez completado con รฉxito.
  24. 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:

Constructores y Destructores

Aquรญ hay una captura de pantalla del cรณdigo:

Constructores y Destructores

Explicaciรณn del cรณdigo:

  1. Incluya el archivo de encabezado iostream en el cรณdigo para usar sus funciones.
  2. Incluya el espacio de nombres estรกndar en nuestro cรณdigo para usar sus clases sin llamarlo.
  3. Crea una clase llamada ClassA.
  4. Utilice el modificador de acceso pรบblico para marcar el miembro que estamos a punto de crear como de acceso pรบblico.
  5. Crea un constructor para la clase.
  6. 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.
  7. Fin del cuerpo del constructor de clase.
  8. Crea un destructor para la clase.
  9. 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.
  10. Fin del cuerpo del destructor.
  11. Fin del cuerpo de la clase.
  12. Llame a la funciรณn principal(). La lรณgica del programa debe agregarse dentro del cuerpo de esta funciรณn.
  13. Crea un objeto de clase y asรญgnale el nombre a. Se llamarรก al constructor.
  14. Cree una variable entera llamada p y asรญgnele un valor de 1.
  15. Cree un bloque de declaraciรณn if usando la variable p.
  16. Crea un objeto de clase y dale el nombre b. Se llamarรก al destructor.
  17. Fin del cuerpo de la declaraciรณn if.
  18. 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.

Resumir este post con: