Clase y objeto C++ con ejemplo
¿Qué es una Clase?
Una clase de C++ 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. Puede ver una clase como un modelo para un objeto.
Una clase sea un prototipo para 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. Además, es posible crear muchos objetos a partir de una clase.
En la figura anterior, tenemos un prototipo de una sola casa. A partir de este prototipo, hemos creado dos casas con diferentes características.
En este tutorial, aprenderá:
- ¿Qué es una clase?
- Ejemplo de clase
- Palabras clave privadas y públicas
- Definición de objeto
- Acceder a miembros de datos
- Funciones de miembros de clase
- Constructores y Destructores
Declaración de clase
En C+, una clase se define usando 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 la clase es el nombre que se asigna 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 haber encontrado estas dos palabras clave. Son modificadores de acceso.
- Privado:
Cuando la palabra clave privada se usa para definir una función o clase, se vuelve privada. Estos solo son accesibles desde dentro de la clase.
- Público:
La palabra clave pública, por otro lado, hace que los datos/funciones sean públicos. 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, usamos el operador de punto (.). Estos son miembros marcados con modificador de acceso público.
Ejemplo 1:
#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 usar 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.
- Usando el modificador de acceso público para marcar las variables que estamos a punto de crear como accesibles públicamente.
- Declarar el costo variable de un tipo de datos doble.
- Declare una variable entera llamada slots.
- Fin del cuerpo de la clase.
- Llamar a la función main(). 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 costo de Y6 ahora está establecido en 100.0.
- Acceda a las ranuras de variables/miembros de la clase Teléfono usando el objeto Y6. El valor se establece en 2. Las ranuras para Y6 ahora se establecen en 2.
- Acceda al costo variable/miembro de la clase Teléfono usando el objeto Y7. El valor se establece en 200,0. El costo de Y7 ahora está establecido en 200.0.
- Acceda a las ranuras de variables/miembros de la clase Teléfono usando el objeto Y7. El valor se establece en 2. Las ranuras para Y7 ahora se establecen en 2.
- Imprima el costo de Y6 en la consola junto con otro texto.
- Imprima 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 completarse 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 definida fuera de la clase no puede acceder a dichos miembros directamente. Solo se accede a un miembro de clase privada 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 2:
#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.
- Cree 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 llamada 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 clase y el operador de resolución de ámbito 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 clase y el operador de resolución de ámbito para acceder a la función set_a(). Queremos definir qué hace la función cuando se invoca.
- Asignar el valor de la variable val a la variable a.
- Fin de la definición de la función set_a().
- Llama a la función main(). La lógica del programa debe agregarse dentro del cuerpo de esta función.
- Cree una instancia de ClassA y asígnele 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.
- Imprimir texto junto con el 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 al completarse con éxito.
- Fin del cuerpo de la función main().
Ejemplo 3:
#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 llamada 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 mostrarValor().
- Fin del cuerpo de la clase llamada ChildClass.
- Llama a la función main(). 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 llamada displayValue().
- El programa debe devolver valor al completarse con éxito.
- Fin del cuerpo de la función main().
Funciones de miembros de clase
Las funciones nos ayudan a manipular los datos. Las funciones de miembro de clase se pueden definir de dos maneras:
- Dentro de la definición de clase
- Fuera de la definición de clase
Si se va a definir una función fuera de una definición de clase, debemos usar el operador de resolución de alcance (::). Esto debe ir acompañado de los nombres de clase y función.
Ejemplo 2:
#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.
- Cree 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 llamada tutorial_name.
- 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 Printed(). Esta función se define dentro de la definición de clase. Su cuerpo se ha agregado dentro de la definición de clase.
- Imprime el valor de la variable id 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 comienzo de la definición de la función printname().
- Imprime el valor de la variable tutorial_name 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().
- Llama a la función main(). 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 tutorial_name.
- Utilice la instancia guru99 para asignar un valor de 1001 a la variable id.
- Utilice la instancia guru99 para llamar a la función printname() .
- Llame al comando end (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 al completarse 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. Los compiladores de C++ llaman 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é es 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 retorno.
El constructor se puede definir dentro o fuera del cuerpo de la clase. Si se define fuera del cuerpo de la clase, debe definirse con el nombre de la clase y el operador de resolución de ámbito (::).
Ejemplo 3:
#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.
- Cree una clase llamada ClassA.
- Utilice el modificador de acceso público para marcar el miembro que estamos a punto de crear como accesible públicamente.
- Cree un constructor para la clase.
- Texto para imprimir en la consola cuando se llama al constructor. endl es una palabra clave de C++, lo que significa línea final. Mueve el cursor del ratón a la siguiente línea.
- Fin del cuerpo del constructor de la clase.
- Cree un destructor para la clase.
- Texto para imprimir en la consola cuando se llama al destructor. endl es una palabra clave de C++, lo que significa línea final. Mueve el cursor del ratón a la siguiente línea.
- Final del cuerpo del destructor.
- Fin del cuerpo de la clase.
- Llama a la función main(). La lógica del programa debe agregarse dentro del cuerpo de esta función.
- Cree un objeto de clase y asígnele 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.
- Cree un objeto de clase y asígnele el nombre b. Se llamará al destructor.
- Fin del cuerpo de la sentencia 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.
- Una clase de C++ combina datos y métodos para manipular los datos en uno solo.
- 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 usar una instancia de la clase.
- Para crear una clase, usamos la palabra clave class.
- Las funciones de miembro de clase se pueden definir dentro o fuera de una clase.
Lenguaje C
- Clase y objeto de C#
- Clases y objetos de C++
- Función amiga de C++ y Clases amigas
- Plantillas de clase de C++
- Operadores en C++ con Ejemplo:Qué es, Tipos y Programas
- Declaración de caso de cambio de C ++ con EJEMPLO
- C++ Asignación dinámica de arreglos con ejemplo
- Estructura C++ con ejemplo
- std::list en C++ con ejemplo
- Diferencia entre estructura y clase:explicada con el ejemplo de C++
- Tutorial de clase abstracta de C# con ejemplo:¿Qué es la abstracción?