21
21/02/200 Universidad Militar Nueva Granada - Ingeniería Mecatrónica - Programación II CLASES II CLASES II ING. CAMILO TÁUTIVA MANCERA

Clases

  • Upload
    lili

  • View
    998

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Clases

21/02/2006Universidad Militar Nueva Granada - Ingeniería Mecatrónica - Programación II1

CLASES IICLASES II

ING. CAMILO TÁUTIVA MANCERA

Page 2: Clases

21/02/2006Universidad Militar Nueva Granada - Ingeniería Mecatrónica - Programación II2

IntroducciIntroduccióón 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 sobrecargarMediante la interfaz, un usuario u otro objeto se cominican con un objeto Funciones set y get

Page 3: Clases

21/02/2006Universidad Militar Nueva Granada - Ingeniería Mecatrónica - Programación II3

TemasTemas

Tipos de funciones miembroTipos de constructoresFunciones set y getObjetos y funciones miembro constInicializadores de miembrosComposiciónFunciones y clases friend (amigas)

Page 4: Clases

21/02/2006Universidad Militar Nueva Granada - Ingeniería Mecatrónica - Programación II4

Tipos de funciones miembrosTipos de funciones miembrosConstructores y destructores: se les llama automaticamente cuando un objeto se crea o se destruyeset y get: permiten a los usuarios establecer (escribir) y leer (obtener) los valores de los datos miembroOperadores: permiten definir operadores estandar para los objetos de las clasesIteradores: procesan colecciones de objetos tales como arrays y listas

Page 5: Clases

21/02/2006Universidad Militar Nueva Granada - Ingeniería Mecatrónica - Programación II5

Tipos de constructoresTipos de constructores

Por defecto: constructor que no tiene argumentosAlternativo (predeterminado): constructor con parámetrosSobrecargado: proporcionan medios alternativos para inicializar objetos nuevos de una claseDe 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 tipo

Page 6: Clases

21/02/2006Universidad Militar Nueva Granada - Ingeniería Mecatrónica - Programación II6

Constructor por defectoConstructor por defecto

Constructor alternativoConstructor alternativo

// el constructor no requiere parametros Punto::Punto() {

x=0;y=0;

} // fin del constructor Punto

// 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

Page 7: Clases

21/02/2006Universidad Militar Nueva Granada - Ingeniería Mecatrónica - Programación II7

Funciones set y getFunciones set y getset (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 datos

Page 8: Clases

21/02/2006Universidad Militar Nueva Granada - Ingeniería Mecatrónica - Programación II8

// 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 estableceHora

// 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

FunciFuncióón setn set

FunciFuncióón getn get

Page 9: Clases

21/02/2006Universidad Militar Nueva Granada - Ingeniería Mecatrónica - Programación II9

Objetos y funciones miembro Objetos y funciones miembro const const 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

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 objeto

Tiempo despierta( 6, 45, 0 ); // objeto no constante

const Tiempo mediodia( 12, 0, 0 ); // objeto constante

Page 10: Clases

21/02/2006Universidad Militar Nueva Granada - Ingeniería Mecatrónica - Programación II10

FunciFuncióón miembro constn miembro const

// imprime Tiempo en formato universalvoid Tiempo::imprimeUniversal() const{

cout << setfill( '0' ) << setw( 2 ) << hora << ":"<< setw( 2 ) << minuto << ":"<< setw( 2 ) << segundo;

} // fin de la función imprimeUniversal

La declaración const no esta permitida para constructores y destructores

Una función se especifica como const tanto en su prototipo como en su definición

Page 11: Clases

21/02/2006Universidad Militar Nueva Granada - Ingeniería Mecatrónica - Programación II11

Inicializadores de miembrosInicializadores 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ónCiertos tipos de datos (constantes y referencias)

no pueden ser valores asignados, para esto se utilizan los Inicializadores de miembros

Page 12: Clases

21/02/2006Universidad Militar Nueva Granada - Ingeniería Mecatrónica - Programación II12

class Incremento {public:

Incremento( int c = 0, int i = 1 ); // constructor predeterminadovoid sumaIncremento() {

cuenta += incremento; } // fin de la función sumaIncrementovoid imprime() const; // imprime cuenta e incremento

private:int cuenta;const int incremento; // dato miembro constante

}; // fin de la clase Incremento

// constructor Incremento::Incremento( int c, int i )

: cuenta( c ), // inicializador para un miembro no constanteincremento( i ) // se requiere inicializador para un miembro constante

{ // cuerpo vacío

} // fin del constructor Incremento

Ejemplo inicializadores de miembrosEjemplo inicializadores de miembros

Page 13: Clases

21/02/2006Universidad Militar Nueva Granada - Ingeniería Mecatrónica - Programación II13

ComposiciComposicióónnUna 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álidoscout << endl;return 0;

} // fin de main

Page 14: Clases

21/02/2006Universidad Militar Nueva Granada - Ingeniería Mecatrónica - Programación II14

Funciones y clases amigasFunciones 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

Page 15: Clases

21/02/2006Universidad Militar Nueva Granada - Ingeniería Mecatrónica - Programación II15

// Definición de la clase Cuenta class Cuenta {

friend void estableceX( Cuenta &, int ); // declaración de amistadpublic:

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

Ejemplo funciones amigasEjemplo funciones amigas

La amistad se otorga, no se tomaLa amistad no es simétrica ni transitiva

Page 16: Clases

21/02/2006Universidad Militar Nueva Granada - Ingeniería Mecatrónica - Programación II16

Apuntador thisApuntador thisCada 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 *thisvoid Prueba::imprime() const {

// uso implícito del apuntador this para acceder al miembro xcout << " x = " << x;// uso explícito del apuntador this para acceder al miembro xcout << "\n this->x = " << this->x;// uso explícito del apuntador this desreferenciado y // el operador punto para acceder al miembro xcout << "\n(*this).x = " << ( *this ).x << endl;

} // fin de la función imprime

Page 17: Clases

21/02/2006Universidad Militar Nueva Granada - Ingeniería Mecatrónica - Programación II17

Operadores new y deleteOperadores 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>

Page 18: Clases

21/02/2006Universidad Militar Nueva Granada - Ingeniería Mecatrónica - Programación II18

Miembros de clase staticMiembros de clase staticUna 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 claseLos datos miembro estáticos tienen alcance de clase y se pueden declarar como public, private o protectedLos miembros estáticos de una clase existen incluso cuando no existen objetos de la claseAcceso: Nombreclase::Miembroestatico

Page 19: Clases

21/02/2006Universidad Militar Nueva Granada - Ingeniería Mecatrónica - Programación II19

Ejemplo dato private y funcion public static Ejemplo dato private y funcion public static

// Definición de la clase Empleadoclass Empleado {public:

Empleado() // constructor// Función miembro estáticastatic int obtienecuenta();

private:char *nombre;char *apellido// dato miembro estáticostatic int cuenta;

}; // fin de la clase Empleado

Acceso

Public:

Private y protected

Nombreclase::MiembroestaticoA través de cualquier objeto de dicha clase

A través de una función miembro public static Nombreclase::Nombrefuncion

Page 20: Clases

21/02/2006Universidad Militar Nueva Granada - Ingeniería Mecatrónica - Programación II20

Clases contenedoras e Clases contenedoras e iteradorasiteradoras

Clases proxiClases proxi

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)

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

Page 21: Clases

21/02/2006Universidad Militar Nueva Granada - Ingeniería Mecatrónica - Programación II21

Bibliografia Bibliografia

Deitel H., Deitel P., “Como programar en C++”, cuarta edición. Pearson educación. Capítulo 7Joyanes A. Luis, “Prograamción en C++, algoritmos, estructuras de datos y objetos”. Parte I, Capítulo 8; parte II, Capítulo 13