Sei sulla pagina 1di 12

SextaSesin

Metodologas y Tcnicas de Programacin II

Programacin Orientada a Objeto (POO) C++

Inicializacin y Limpieza I
1

6.0EstadodelPrograma
Introduccin a la POO
Historia de la Programacin Conceptos de POO C++ Mi primera Clase

Repaso de Conceptos

Estndares de Programacin Punteros y Memoria

E/S Control y Operadores

Clases y Objetos en C++


Uso y aplicacin Constructores

Funciones Amigas Constantes e inline

Sobrecarga
De Operadores De Funciones

Herencia.

Tipos de Visibilidad

Herencia Mltiple

Polimorfismo
Funciones Virtuales Polimorfismo y Sobrecarga.

Plantillas

Contenedores

Iteradores

6.1RepasodeSesionesAnteriores
Relaciones de Amistad
Si A -> B y B -> C Si A -> B Si A -> B y b <<B NO A->C NO B->A NO A->b (b es el hijo de B)

Podemos definir relaciones de amistas con una funcin, con un mtodo de otra clase o con una clase entera. Friend = Puedes acceder a mis atributos privados como si fueras uno de mis mtodos

friendvoidg(X*,int); friendvoidY::f(X*); friendclassZ; friendvoidh();

//Globalfriend //UnmtododelaclaseY //TodaZesmiamiga

6.1RepasodeSesionesAnteriores
Las relaciones de Amistad Son una forma de saltarme el control de acceso (De forma controlada) Pueden resultar tiles por razones de rendimiento por ejemplo (Funcin aprobar_asignatura() a la que permito que acceda a nota directamente. alumno.nota = 8)

6.2InicializacindeObjetos
Constructores y Destructores C++, al contrario que C, permite incluir funciones en el interior de las estructuras. Normalmente estas funciones tienen la misin de manipular los datos incluidos en la estructura. En realidad nosotros utilizamos clases. Dos funciones muy particulares son las de inicializacin y limpieza, o constructor, y destructor. El constructor es una funcin sin tipo de retorno y con el mismo nombre que la estructura. Alumno() El destructor tiene la misma forma, salvo que el nombre va precedido el operador "~". ~Alumno()

6.2InicializacindeObjetos
Constructores y Destructores
classPunto { intx_; inty_; Punto();//Declaracindelconstructor Punto(intx,inty);//Otroconstructor. }; Punto::Punto() { x_=y_=0; } Punto::Punto(intx,inty) { x_=x; y_=y; }

6.2InicializacindeObjetos
Constructores

Sirven para inicializar un objeto de una determinada clase al mismo tiempo que se declara. Tienen el mismo nombre que la clase. No retornan ningn valor. No pueden ser heredados. En general deben ser pblicos Por qu?

6.2InicializacindeObjetos
Constructores
classPareja { public: //Constructor Pareja(inta,intb); //FuncionesmiembrooMetodos voidLee(int&a,int&b); voidGuarda(inta,intb); private: //DatosmiembrooAtributos inta_,b_; }; Pareja::pareja(inta,intb) { a_=a2; b_=b2; } Parejapar1(12,32); intx,y; par1.Lee(x,y); cout<<"Valorpar1.a:"<<x<<endl; cout<<"Valorpar1.b:"<<y<<endl; Parejapar1;//IlegalPorque? Parejapar1();//Ilegal(funcin) voidPareja::Lee(int&a,int&b) { a_=a; b_=b; } voidPareja::Guarda(inta,intb) { a_=a2; b_=b2; }

6.2InicializacindeObjetos
Modo simplificado de inicializacin Se basa en que en C++ todo son objetos (int tambin lo es). Cualquier variable (u objeto) tiene un constructor por defecto Inicializadores. Nombre de la variable miembro a inicializar, seguida de la expresin que se usar para inicializarla entre parntesis. Los inicializadores se aadirn a continuacin del parntesis cerrado que encierra a los parmetros del constructor, antes del cuerpo del constructor y separado del parntesis por dos puntos ":".
pareja::pareja(int a, int b) { a_=a; b_=b; } //Esmsseguroyeficienteas: pareja::pareja(inta,intb):a_(a),b_(b){}

6.2InicializacindeObjetos
Sobrecarga de Constructores
Podemos aadir varios constructores a las clase. Es decir: la funcin del constructor puede sobrecargarse.
classPareja { public: //Constructor Pareja(inta,intb); Pareja():a_(0),b_(0){} //FuncionesmiembrooMetodos voidLee(int&a,int&b); voidGuarda(inta,intb); private: //DatosmiembrooAtributos inta_,b_; }; 10 Estamos simulando el constructor por defecto. Podemos declarar objetos de la clase Pareja especificando los dos argumentos o ninguno de ellos, en este ltimo caso se inicializarn los datos miembros con ceros.

6.2InicializacindeObjetos
Constructores y argumentos por defecto
Podemos asignar valores por defecto a los argumentos del constructor, de este modo reduciremos el nmero de constructores necesarios.
classPareja { public: //Constructores Pareja(inta,intb); Pareja():a_(0),b_(0){}; //Metodos voidLee(int&a,int&b); voidGuarda(inta,intb); private: //Atributos inta_,b_; }; //Metodos voidLee(int&a,int&b); voidGuarda(inta,intb); private: //DatosmiembrooAtributos inta_,b_; }; 11 classPareja { public: //Constructor Pareja(inta=0,intb=0):a_(0),b_(0){};

6.2FinI
Constructores

Seguiremosconel ConstructorCopia ...

12

Potrebbero piacerti anche