Conceptos básicos de las clases en C++.
El contenido de este apartado es:
- Clases, objetos y atributos.
- Constructores,
- Destructores.
- Atributos de clase.
- Métodos de clase.
- Instancias de objetos.
- Ejemplos.
construcciones sintácticas que sirven para representar las características que debe tener un objeto creado con esa clase. Esta construcción sintáctica debe ser legible para quien lee o escribe el código y a la vez debe tener sentido lógico. Las clases son creadas durante la compilación del programa. Liceo Militar de Honduras | Luis E. Fajardo 2
contrucciones definidas a partir de una clase. A los objetos también se les llama instancias de clase. Los objetos contienen los atributos de una clase y se pueden hacer operaciones sobre ellos. Un programa puede crear cualquier cantidad de objetos en memoria volátil siempre y cuando la capacidad de direccionamiento de la memoria lo permita. Los objetos son creados durante la ejecución del programa. Liceo Militar de Honduras | Luis E. Fajardo 3
que se deben conocer antes de empezar... ...estos conceptos son los constructores, los destructores, los métodos y los atributos de clase. Liceo Militar de Honduras | Luis E. Fajardo 12
al construir un objeto de una clase. Tiene como finalidad la inicialización de los atributos de la clase y ejecutar algunos métodos de la clase. Una clase puede tener tantos constructores como el desarrollador los necesite, a esto se le llama constructores sobrecargados. La característica más destacada de los constructores es que su nombre es el mismo de la clase, es decir, tiene el mismo nombre de la clase. Liceo Militar de Honduras | Luis E. Fajardo 13
depender de las distintas combinaciones de argumentos de entrada al constructor. Cuando no se declara un constructor de manera explícita para una clase, entonces C++ se encarga de asignar un constructor por defecto a la clase. A diferencia de las funciones, los constructores no tienen la facultad de retornar valores. Liceo Militar de Honduras | Luis E. Fajardo 14
para destruir objetos del tipo de la clase. No tiene argumentos y tampoco puede retornar valores. Los destructores tienen el mismo nombre de la clase, con la particularidad que al inicio llevan el caracter ~ . Los destructores se destruyen automáticamente dependiendo del contexto en donde se encuentren. Los destructores son especialmente útiles para destruir objetos de almacenamiento dinámico. Liceo Militar de Honduras | Luis E. Fajardo 16
diferencian a un objeto de otro y determinan su apariencia, estado u otras cualidades. Los atributos se guardan como variables de tipo primitivo o de tipo compuesto. Los atributos determinan el comportamiento del objeto respecto a los demás objetos que pueda contener el programa. Liceo Militar de Honduras | Luis E. Fajardo 19
la clase> { <tipo de dato> <nombre de atributo>; <tipo de dato> <nombre de atributo>; <tipo de dato> <nombre de atributo>; ... }; Liceo Militar de Honduras | Luis E. Fajardo 20
no lleva argumentos, la inicialización de las variables se hace con valores por defecto que el desarrollador define dentro del constructor. class <nombre de la clase> { <tipo de dato> <nombre de atributo>; <tipo de dato> <nombre de atributo>; <tipo de dato> <nombre de atributo>; public: <nombre de la clase>() {} // constructor por defecto }; Liceo Militar de Honduras | Luis E. Fajardo 23
argumentos de entrada que se utilizan luego en la inicialización de los atributos de la clase. class <nombre de la clase> { <tipo de dato> <nombre de atributo>; <tipo de dato> <nombre de atributo>; <tipo de dato> <nombre de atributo>; public: <nombre de la clase>(<tipo de dato> <nombre de argumento>, <tipo de dato> <nombre de argumento>, ...) { // constructor parametrizado <nombre de atributo> = <nombre de argumento>; <nombre de atributo> = <nombre de argumento>; ... } }; Liceo Militar de Honduras | Luis E. Fajardo 25
referencia a otro objeto de la misma clase, por tanto las variables del objeto que se está creando se inicializan con los valores del objeto que se pasa como parámetro. Se le llama constructor de copia, por que copia los valores de un objeto existente para inicializar otro objeto. En la declaración del constructor el parámetro de entrada debe tener la palabra reservada const para evitar modificaciones en el objeto que se está copiando. Liceo Militar de Honduras | Luis E. Fajardo 27
clase> { <tipo de dato> <nombre de atributo>; <tipo de dato> <nombre de atributo>; <tipo de dato> <nombre de atributo>; public: <nombre de la clase>(const <nombre de la clase>& <nombre de objeto>) { // constructor de copia <nombre de atributo> = <nombre de objeto>.<nombre de atributo>; <nombre de atributo> = <nombre de objeto>.<nombre de atributo>; ... } }; Liceo Militar de Honduras | Luis E. Fajardo 28
nombre; int edad; char sexo; std::string lugar_nac; public: Persona(const Persona& persona) { nombre = persona.nombre; edad = persona.edad; sexo = persona.sexo; lugar_nac = persona.lugar_nac; } } Liceo Militar de Honduras | Luis E. Fajardo 29
sirven para manipular las variables de la clase, de ahí viene la primera característica relevante de la programación orientada a objetos que es el encapsulamiento. Los métodos se declaran y definen de la misma manera que una función cualquiera en C++. Liceo Militar de Honduras | Luis E. Fajardo 30
métodos que usualmente se definen para acceder a una variable privada de la clase. método set : este metodo se encarga de modificar directamente el valor de un atributo privado a través de un argumento. Generalmente es un método de tipo void y lleva un argumento del mismo tipo del atributo a modificar. método get : por lo general es un método de una sola línea de código que retorna el valor actual de un atributo privado. El valor de retorno de este método es del mismo tipo del atributo al cual hace referencia. Generalmente un método get no tiene argumentos. Liceo Militar de Honduras | Luis E. Fajardo 32
tienen nivel de acceso public o protected . Los métodos get y set los traduciremos a español, llamandolos métodos obtener y modificar . Liceo Militar de Honduras | Luis E. Fajardo 33
datos de cada uno de los objetos se necesita acceder a sus atributos a través de un método de la clase. Para esto se debe definir un método de clase. Liceo Militar de Honduras | Luis E. Fajardo 35
clase se pueden hacer desde cualquier función externa que reciba un objeto de la clase o que cree una instancia de la misma dentro de la función. Generalmente en programas pequeños las instancias de clase se crean en la función main() y las funciones externas que interactuan con la clase reciben el objeto como argumento de función. Liceo Militar de Honduras | Luis E. Fajardo 37
de tipos de datos primitivos se pueden construir arreglos de tipo de datos compuestos. int main(int argc, char *argv[]) { // arreglo de objetos Persona personas[5]; personas[0] = Persona("Martin", 3, 'M', "Bruselas, Belgica"); personas[1] = Persona("Joseph", 8, 'M', "Los Angeles CA, USA"); personas[2] = Persona("Josue", 17, 'M', "Santiago, Chile"); personas[3] = Persona("Mariam", 15, 'F', "Roma, Italia"); personas[4] = Persona("Alice", 65, 'F', "Lion, Francia"); } Liceo Militar de Honduras | Luis E. Fajardo 40
clase en C++. https://www.codingame.com/playgrounds/50577/miembros-especiales-de-la- clase-en-c-practica-2/ Liceo Militar de Honduras | Luis E. Fajardo 42