CLASES II     ING. CAMILO TÁUTIVA MANCERAUniversidad Militar Nueva Granada - Ingeniería Mecatrónica - Programación II
Introducción     Los      constructores     se     ejecutan     automaticamente cuando se crea un objeto     de una clase ...
Temas     Tipos de funciones miembro     Tipos de constructores     Funciones set y get     Objetos y funciones miembro co...
Tipos de funciones miembros   Constructores y destructores: se les llama   automaticamente cuando un objeto se crea o se  ...
Tipos de constructores   Por           defecto:               constructor               que          no   tiene   argument...
Constructor por defecto// el constructor no requiere parametrosPunto::Punto(){   x=0;   y=0;} // fin del constructor Punto...
Funciones set y get     set (establecer): permite al usuario establecer     (escribir) los valores de los datos miembros  ...
Función set// establece un nuevo valor para Tiempo de acuerdo con la hora universal,// realiza la validación de los valore...
Objetos y funciones miembroconst  Algunos objetos necesitan ser modificados y otros no; la  palabra const especifica que u...
Función miembro const// imprime Tiempo en formato universal                                          Una función sevoid Ti...
Inicializadores de miembros     No está permitido inicializar un dato miembro de     una clase cuando ésta se define     S...
Ejemplo inicializadores de miembrosclass Incremento {public:  Incremento( int c = 0, int i = 1 ); // constructor predeterm...
Composición    Una clase compuesta es aquella que contiene    datos miembro que son así mismo objetos de    otras clases  ...
Funciones y clases amigas   Son funciones que se definen   fuera del alcance de la clase y   aun así tienen el derecho de ...
Ejemplo funciones amigas // Definición de la clase Cuenta class Cuenta {    friend void estableceX( Cuenta &, int ); // de...
Apuntador this     Cada objeto tiene acceso a su propia dirección a     través de un apuntador llamado this      // imprim...
Operadores new y delete     Administración de memoria dinámica: controlar     la asignación y liberación de memoria en un ...
Miembros de clase static     Una variable de clase static (estática) representa     información “propia de la clase”, es d...
Ejemplo dato private y funcion public static // Definición de la clase Empleado class Empleado { public:    Empleado() // ...
Clases contenedoras eiteradoras    Las clases contenedoras son clases diseñadas para contener    colecciones de objetos (a...
Bibliografia     Deitel H., Deitel P., “Como programar en     C++”, cuarta edición. Pearson educación.     Capítulo 7     ...
Upcoming SlideShare
Loading in …5
×

Clases

1,318 views

Published on

Published in: Business, Travel
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,318
On SlideShare
0
From Embeds
0
Number of Embeds
7
Actions
Shares
0
Downloads
12
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Clases

  1. 1. CLASES II ING. CAMILO TÁUTIVA MANCERAUniversidad Militar Nueva Granada - Ingeniería Mecatrónica - Programación II
  2. 2. Introducción Los constructores se ejecutan automaticamente cuando se crea un objeto de una clase e inicializan los datos miembro Los destructores no entregan ningún valor ni reciben ningún parámetro, tampoco se pueden sobrecargar Mediante la interfaz, un usuario u otro objeto se cominican con un objeto Funciones set y getUniversidad Militar Nueva Granada - Ingeniería Mecatrónica - Programación II
  3. 3. Temas Tipos de funciones miembro Tipos de constructores Funciones set y get Objetos y funciones miembro const Inicializadores de miembros Composición Funciones y clases friend (amigas)Universidad Militar Nueva Granada - Ingeniería Mecatrónica - Programación II
  4. 4. Tipos de funciones miembros Constructores y destructores: se les llama automaticamente cuando un objeto se crea o se destruye set y get: permiten a los usuarios establecer (escribir) y leer (obtener) los valores de los datos miembro Operadores: permiten definir operadores estandar para los objetos de las clases Iteradores: procesan colecciones de objetos tales como arrays y listasUniversidad Militar Nueva Granada - Ingeniería Mecatrónica - Programación II
  5. 5. Tipos de constructores Por defecto: constructor que no tiene argumentos Alternativo (predeterminado): constructor con parámetros Sobrecargado: proporcionan medios alternativos para inicializar objetos nuevos de una clase De copia: se crea automaticamente por el compilador cuando un objeto se pasa por valor; se llama también cuando un objeto se declara e inicializa con otro objeto del mismo tipoUniversidad Militar Nueva Granada - Ingeniería Mecatrónica - Programación II
  6. 6. Constructor por defecto// el constructor no requiere parametrosPunto::Punto(){ x=0; y=0;} // fin del constructor PuntoConstructor alternativo// el constructor requiere dos parametros enteros y utiliza funciones miembro para// inicializar los datos miembroPunto::Punto(int valx, int valy){ fijarx(valx); fijary(valy);} // fin del constructor Punto Universidad Militar Nueva Granada - Ingeniería Mecatrónica - Programación II
  7. 7. Funciones set y get set (establecer): permite al usuario establecer (escribir) los valores de los datos miembros privados get (obtener): permite al usuario leer los valores de los datos miembros privados Tienen la ventaja de que se puede controlar el formato en el cual se muestra la información y examinar cualquier intento de modificar los datosUniversidad Militar Nueva Granada - Ingeniería Mecatrónica - Programación II
  8. 8. Función set// establece un nuevo valor para Tiempo de acuerdo con la hora universal,// realiza la validación de los valores de datos y establece los valores no válidos en cerovoid Tiempo::estableceHora( int h, int m, int s ){ hora = ( h >= 0 && h < 24 ) ? h : 0; minuto = ( m >= 0 && m < 60 ) ? m : 0; segundo = ( s >= 0 && s < 60 ) ? s : 0;} // fin de la función estableceHoraFunción get// imprime Tiempo en formato estándarvoid Tiempo::imprimeEstandar(){ cout << ( ( hora == 0 || hora == 12 ) ? 12 : hora % 12 ) << ":" << setfill( 0 ) << setw( 2 ) << minuto << ":" << setw( 2 ) << segundo << ( hora < 12 ? " AM" : " PM" );} // fin de la función imprimeEstandar Universidad Militar Nueva Granada - Ingeniería Mecatrónica - Programación II
  9. 9. Objetos y funciones miembroconst Algunos objetos necesitan ser modificados y otros no; la palabra const especifica que un objeto no se puede modificar y que cualquier intento de hacerlo provocara un error Tiempo despierta( 6, 45, 0 ); // objeto no constante const Tiempo mediodia( 12, 0, 0 ); // objeto constante El compilador deshabilita las llamadas a funciones miembro para objetos const, a menos que las funciones miembro por si mismas se declaren como const. Además el compilador no permite a las funciones miembro declaradas como const modificar al objetoUniversidad Militar Nueva Granada - Ingeniería Mecatrónica - Programación II
  10. 10. Función miembro const// imprime Tiempo en formato universal Una función sevoid Tiempo::imprimeUniversal() const{ especifica como cout << setfill( 0 ) << setw( 2 ) << hora << ":" const tanto en su << setw( 2 ) << minuto << ":" << setw( 2 ) << segundo; prototipo como en su definición} // fin de la función imprimeUniversal La declaración const no esta permitida para constructores y destructores 1 Universidad Militar Nueva Granada - Ingeniería Mecatrónica - Programación II
  11. 11. Inicializadores de miembros No está permitido inicializar un dato miembro de una clase cuando ésta se define Se busca inicializar los datos miembro cada vez que se crea una instancia específica de la clase (objeto) El sitio lógico para inicializar los datos miembro está dentro del constructor de la clase, que utiliza expresiones de asignación Ciertos tipos de datos (constantes y referencias) no pueden ser valores asignados, para esto se utilizan los Inicializadores de miembros 1Universidad Militar Nueva Granada - Ingeniería Mecatrónica - Programación II
  12. 12. Ejemplo inicializadores de miembrosclass Incremento {public: Incremento( int c = 0, int i = 1 ); // constructor predeterminado void sumaIncremento() { cuenta += incremento; } // fin de la función sumaIncremento void imprime() const; // imprime cuenta e incrementoprivate: int cuenta; const int incremento; // dato miembro constante}; // fin de la clase Incremento// constructorIncremento::Incremento( int c, int i ) : cuenta( c ), // inicializador para un miembro no constante incremento( i ) // se requiere inicializador para un miembro constante{ // cuerpo vacío} // fin del constructor Incremento 1 Universidad Militar Nueva Granada - Ingeniería Mecatrónica - Programación II
  13. 13. Composición Una clase compuesta es aquella que contiene datos miembro que son así mismo objetos de otras clases int main() { Fecha nacimiento( 7, 24, 1949 ); Fecha contratacion( 3, 12, 1988 ); Empleado gerente( "Juan", "Perez", nacimiento, contratacion ); cout << n; gerente.imprime(); cout << "nVerifica el constructor Fecha con valores no validos:n"; Fecha ultimoDiaFest( 14, 35, 1994 ); // mes y día no válidos cout << endl; return 0; } // fin de main 1Universidad Militar Nueva Granada - Ingeniería Mecatrónica - Programación II
  14. 14. Funciones y clases amigas Son funciones que se definen fuera del alcance de la clase y aun así tienen el derecho de acceder a los miembros no publicos de la clase Las funciones independientes o las clases completas se pueden declarar para que sean amigas de otra clase 1Universidad Militar Nueva Granada - Ingeniería Mecatrónica - Programación II
  15. 15. Ejemplo funciones amigas // Definición de la clase Cuenta class Cuenta { friend void estableceX( Cuenta &, int ); // declaración de amistad public: Cuenta() // constructor : x( 0 ) // inicializa x en 0 { // cuerpo vacío } // fin del constructor Cuenta // despliega x void imprime() const { cout << x << endl; } // fin de lafunción imprime private: int x; // dato miembro }; // fin de la clase Cuenta La amistad se otorga, no se toma La amistad no es simétrica ni transitiva 1Universidad Militar Nueva Granada - Ingeniería Mecatrónica - Programación II
  16. 16. Apuntador this Cada objeto tiene acceso a su propia dirección a través de un apuntador llamado this // imprime x mediante el uso implícito y explícito de apuntadores this; // se requieren paréntesis alrededor de *this void Prueba::imprime() const { // uso implícito del apuntador this para acceder al miembro x cout << " x = " << x; // uso explícito del apuntador this para acceder al miembro x cout << "n this->x = " << this->x; // uso explícito del apuntador this desreferenciado y // el operador punto para acceder al miembro x cout << "n(*this).x = " << ( *this ).x << endl; } // fin de la función imprime 1Universidad Militar Nueva Granada - Ingeniería Mecatrónica - Programación II
  17. 17. Operadores new y delete Administración de memoria dinámica: controlar la asignación y liberación de memoria en un programa, para cualquier tipo de dato (o clase) Se lleva a cabo con los operadores new y delete Tiempo *ptrTiempo; ptrTiempo= new Tiempo; delete ptrTiempo; Se utiliza el encabezado <new> 1Universidad Militar Nueva Granada - Ingeniería Mecatrónica - Programación II
  18. 18. Miembros de clase static Una variable de clase static (estática) representa información “propia de la clase”, es decir una propiedad de la clase, no de un objeto especifico de la clase Los datos miembro estáticos tienen alcance de clase y se pueden declarar como public, private o protected Los miembros estáticos de una clase existen incluso cuando no existen objetos de la clase Acceso: Nombreclase::Miembroestatico 1Universidad Militar Nueva Granada - Ingeniería Mecatrónica - Programación II
  19. 19. Ejemplo dato private y funcion public static // Definición de la clase Empleado class Empleado { public: Empleado() // constructor // Función miembro estática static int obtienecuenta(); private: char *nombre; char *apellido // dato miembro estático static int cuenta; }; // fin de la clase Empleado Nombreclase::Miembroestatico Public: A través de cualquier objeto de dicha claseAcceso A través de una función miembro Private y public static protected Nombreclase::Nombrefuncion 1Universidad Militar Nueva Granada - Ingeniería Mecatrónica - Programación II
  20. 20. Clases contenedoras eiteradoras Las clases contenedoras son clases diseñadas para contener colecciones de objetos (arreglos, pilas, colas, arboles, etc.) Un iterador es un objeto que devuelve el siguiente elemento de una colección (o realiza alguna acción sobre el siguiente elemento de una colección)Clases proxi La clase proxi es una clase que solo conoce la interfaz pública de su clase y permite a los usuarios utilizar los servicios de la clase sin dar acceso a los detalles de implementación 2Universidad Militar Nueva Granada - Ingeniería Mecatrónica - Programación II
  21. 21. Bibliografia Deitel H., Deitel P., “Como programar en C++”, cuarta edición. Pearson educación. Capítulo 7 Joyanes A. Luis, “Prograamción en C++, algoritmos, estructuras de datos y objetos”. Parte I, Capítulo 8; parte II, Capítulo 13 2Universidad Militar Nueva Granada - Ingeniería Mecatrónica - Programación II

×