Clases y objetos de C++
Clases y objetos de C++
En este tutorial, aprenderemos sobre objetos y clases y cómo usarlos en C++ con la ayuda de ejemplos.
En tutoriales anteriores, aprendimos sobre funciones y variables. A veces es deseable poner funciones y datos relacionados en un solo lugar para que sea lógico y más fácil trabajar con ellos.
Supongamos que necesitamos almacenar el largo, el ancho y la altura de una habitación rectangular y calcular su área y volumen.
Para manejar esta tarea, podemos crear tres variables, por ejemplo, longitud , amplitud y altura junto con las funciones calculateArea()
y calculateVolume()
.
Sin embargo, en C++, en lugar de crear variables y funciones separadas, también podemos empaquetar estos datos y funciones relacionados en un solo lugar (al crear objetos ). Este paradigma de programación se conoce como programación orientada a objetos.
Pero antes podemos crear objetos y usarlos en C++, primero debemos aprender sobre clases .
Clase C++
Una clase es un modelo para el objeto.
Podemos pensar en una clase como un boceto (prototipo) de una casa. Contiene todos los detalles sobre los pisos, puertas, ventanas, etc. En base a estas descripciones construimos la casa. La casa es el objeto.
Crear una clase
Una clase se define en C++ usando la palabra clave class
seguido del nombre de la clase.
El cuerpo de la clase se define dentro de las llaves y termina con un punto y coma al final.
class className {
// some data
// some functions
};
Por ejemplo,
class Room {
public:
double length;
double breadth;
double height;
double calculateArea(){
return length * breadth;
}
double calculateVolume(){
return length * breadth * height;
}
};
Aquí, definimos una clase llamada Room
.
Las variables longitud , amplitud y altura declarados dentro de la clase se conocen como miembros de datos . Y, las funciones calculateArea()
y calculateVolume()
se conocen como funciones miembro de una clase.
Objetos C++
Cuando se define una clase, solo se define la especificación del objeto; no se asigna memoria ni almacenamiento.
Para usar las funciones de datos y acceso definidas en la clase, necesitamos crear objetos.
Sintaxis para definir objetos en C++
className objectVariableName;
Podemos crear objetos de Room
clase (definida en el ejemplo anterior) de la siguiente manera:
// sample function
void sampleFunction() {
// create objects
Room room1, room2;
}
int main(){
// create objects
Room room3, room4;
}
Aquí, dos objetos room1 y sala2 de los Room
clase se crean en sampleFunction()
. De manera similar, los objetos room3 y sala4 se crean en main()
.
Como vemos, podemos crear objetos de una clase en cualquier función del programa. También podemos crear objetos de una clase dentro de la propia clase, o en otras clases.
Además, podemos crear tantos objetos como queramos a partir de una única clase.
Miembros de datos de acceso de C++ y funciones de miembros
Podemos acceder a los miembros de datos y funciones miembro de una clase usando un .
(punto) operador. Por ejemplo,
room2.calculateArea();
Esto llamará al calculateArea()
función dentro del Room
clase para el objeto sala2 .
Del mismo modo, se puede acceder a los miembros de datos como:
room1.length = 5.5;
En este caso, inicializa la longitud variable de sala1 a 5.5
.
Ejemplo 1:Objeto y Clase en Programación C++
// Program to illustrate the working of
// objects and class in C++ Programming
#include <iostream>
using namespace std;
// create a class
class Room {
public:
double length;
double breadth;
double height;
double calculateArea() {
return length * breadth;
}
double calculateVolume() {
return length * breadth * height;
}
};
int main() {
// create object of Room class
Room room1;
// assign values to data members
room1.length = 42.5;
room1.breadth = 30.8;
room1.height = 19.2;
// calculate and display the area and volume of the room
cout << "Area of Room = " << room1.calculateArea() << endl;
cout << "Volume of Room = " << room1.calculateVolume() << endl;
return 0;
}
Salida
Area of Room = 1309 Volume of Room = 25132.8
En este programa, hemos utilizado el Room
clase y su objeto room1 para calcular el área y el volumen de una habitación.
En main()
, le asignamos los valores de longitud , amplitud y altura con el código:
room1.length = 42.5;
room1.breadth = 30.8;
room1.height = 19.2;
Luego llamamos a las funciones calculateArea()
y calculateVolume()
para realizar los cálculos necesarios.
Tenga en cuenta el uso de la palabra clave public
en el programa. Esto significa que los miembros son públicos y se puede acceder a ellos desde cualquier lugar del programa.
Según nuestras necesidades, también podemos crear miembros privados usando el private
palabra clave. Solo se puede acceder a los miembros privados de una clase desde dentro de la clase. Por ejemplo,
class Test {
private:
int a;
void function1() { }
public:
int b;
void function2() { }
}
Aquí, a y function1()
son privados. Por lo tanto, no se puede acceder a ellos desde fuera de la clase.
Por otro lado, b y function2()
son accesibles desde cualquier parte del programa.
Para obtener más información sobre las palabras clave públicas y privadas, visite nuestro tutorial sobre modificadores de acceso a clases de C++.
Ejemplo 2:Uso de public y private en C++ Class
// Program to illustrate the working of
// public and private in C++ Class
#include <iostream>
using namespace std;
class Room {
private:
double length;
double breadth;
double height;
public:
// function to initialize private variables
void initData(double len, double brth, double hgt) {
length = len;
breadth = brth;
height = hgt;
}
double calculateArea() {
return length * breadth;
}
double calculateVolume() {
return length * breadth * height;
}
};
int main() {
// create object of Room class
Room room1;
// pass the values of private variables as arguments
room1.initData(42.5, 30.8, 19.2);
cout << "Area of Room = " << room1.calculateArea() << endl;
cout << "Volume of Room = " << room1.calculateVolume() << endl;
return 0;
}
Salida
Area of Room = 1309 Volume of Room = 25132.8
El ejemplo anterior es casi idéntico al primer ejemplo, excepto que las variables de clase ahora son privadas.
Dado que las variables ahora son privadas, no podemos acceder a ellas directamente desde main()
. Por lo tanto, usar el siguiente código no sería válido:
// invalid code
obj.length = 42.5;
obj.breadth = 30.8;
obj.height = 19.2;
En su lugar, usamos la función pública initData()
para inicializar las variables privadas a través de los parámetros de función double len
, double brth
y double hgt
.
Para obtener más información sobre objetos y clases, visite estos temas:
- Constructores de C++
- ¿Cómo pasar y devolver un objeto desde una función?
Lenguaje C
- Clase y objeto de C#
- Clase y método abstractos de C#
- C# Clase parcial y método parcial
- Clase y método sellados de C#
- Función amiga de C++ y Clases amigas
- Plantillas de clase de C++
- Objetos y clases de Java
- Estructuras y clases en C ++
- Diferencia entre estructura y clase:explicada con el ejemplo de C++
- Clases de almacenamiento en C++
- C++ Fecha y hora