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 las funciones y los 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, ancho y alto de una habitación rectangular y calcular su área y volumen.
Para manejar esta tarea, podemos crear tres variables, digamos, largo, ancho y alto junto con las funciones calculateArea()
y calculateVolume()
.
Sin embargo, en C ++, en lugar de crear variables y funciones separadas, también podemos envolver estos datos y funciones relacionados en un solo lugar (creando objetos ). Este paradigma de programación se conoce como programación orientada a objetos.
Pero antes de que podamos crear objetos y usarlos en C ++, primero debemos aprender sobre las clases .
Clase C ++
Una clase es un plano 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. Basándonos en estas descripciones construimos la casa. La casa es el objeto.
Crear una clase
Una clase se define en C ++ usando una palabra clave class
seguida 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 de longitud, anchura y altura declaradas 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 utilizar los datos y las funciones de acceso definidas en la clase, necesitamos crear objetos.
Sintaxis para definir objetos en C ++
className objectVariableName;
Podemos crear objetos de Room
clase (definidos 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í, Room
se crean dos objetos room1 y room2 de la clase sampleFunction()
. Del mismo modo, los objetos room3 y room4 se crean en main()
.
Como podemos ver, 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 de una sola clase.
Miembros de datos de acceso de C ++ y funciones de miembro
Podemos acceder a los miembros de datos y las funciones de los miembros de una clase usando un .
operador (punto). Por ejemplo,
room2.calculateArea();
Esto llamará a la calculateArea()
función dentro de la Room
clase para el objeto room2.
Del mismo modo, se puede acceder a los miembros de datos como:
room1.length = 5.5;
En este caso, inicializa la variable de longitud de room1 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 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
Área de la habitación = 1309 Volumen de la habitación = 25132.8
En este programa, hemos utilizado la Room
clase y su objeto room1 para calcular el área y el volumen de una habitación.
En main()
, asignamos los valores de largo, ancho y alto 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 la 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() ( ) ) Here, a and function1() are private and are. Thus they cannot be accessed from outside the class.
Por otro lado, by function2()
son accesibles desde cualquier lugar del programa.
Para obtener más información sobre palabras clave públicas y privadas, visite nuestro tutorial Modificadores de acceso a clases de C ++.
Ejemplo 2: uso de público y privado en la clase C ++
// Program to illustrate the working of // public and private in C++ Class #include using namespace std; class Room ( private: double length; double breadth; double height; public: // function to initialize private variables void getData(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.getData(42.5, 30.8, 19.2); cout << "Area of Room = " << room1.calculateArea() << endl; cout << "Volume of Room = " << room1.calculateVolume() << endl; return 0; )
Salida
Área de la habitación = 1309 Volumen de la habitación = 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 cambio, usamos la función pública getData()
para inicializar las variables privadas a través de los parámetros de la función double len
, double brth
y double hgt
.
Para obtener más información sobre objetos y clases, visite estos temas:
- Constructores C ++
- ¿Cómo pasar y devolver un objeto desde una función?