Explora Libros electrónicos
Categorías
Explora Audiolibros
Categorías
Explora Revistas
Categorías
Explora Documentos
Categorías
INDICE
Puntero this
Sobrecarga de operadores
Plantilla de funciones
Plantillas de Clases
Composición de Clases
3
PUNTERO
this
4
Puntero this
Puntero this
El puntero this contiene la dirección del
objeto que activó al método y NO es
posible modificarlo.
Puntero this
Puntero this
1. tope = -1;
2. this->tope = -1;
3. (*this).tope = -1
8
SOBRECARGA
DE
OPERADORES
9
Sobrecarga de operadores
Sobrecarga de operadores
Fracciones f=f1 + f2
Complejos c=c1 + c2
Vectores, etc. v=v+k
Operadores de flujo:
cout<<f;
Fracciones
cin>>c;
Complejos
Vectores, etc. cout<<v;
11
Restricciones
No es posible sobrecargar:
Restricciones
El operador sobrecargado:
1. Operador Miembro
a) f1 + f2
b) f5 * f3
14
Ejemplo
class Fraccion
{public:
Fraccion(int=0 ,int=1 ); // Por defecto
void Imprimir();
void SetNum(int);
void SetDen(int);
int Numerador();
int Denominador();
void Simplificar();
Fraccion operator+(const Fraccion&);
private:
int num;
int den;
int MCD();
};
15
Ejemplo
Ejemplo
class Fraccion
{public:
Fraccion(int=0 ,int=1 ); // Por defecto
void Imprimir();
void SetNum(int);
void SetDen(int);
int Numerador();
int Denominador();
void Simplificar();
Fraccion& operator+(const Fraccion&);
private:
int num;
int den;
int MCD();
};
17
Ejemplo
El operador sobrecargado:
2. Operador Friend
Ejemplo
class Fraccion
{public:
Fraccion(int=0 ,int=1 ); // Por defecto
void Imprimir();
void SetNum(int);
void SetDen(int);
int Numerador();
int Denominador();
void Simplificar();
friend Fraccion operator+ (const Fraccion&,const Fraccion&);
private:
int num;
int den;
int MCD();
};
20
Ejemplo
SOBRECARGA DE
OPERADORES DE
RELACIÓN
22
Ejemplo: Sobrecargar ==
a) if (f1==f2)
b) x= (f1==f2);
23
SOBRECARGA DEL
OPERADOR DE
ASIGNACIÓN
24
Ejemplo: Sobrecargar =
f1= f2;
25
Diferencia
Fraccion::Fraccion(const Fraccion& k)
{num=k.num;
den=k.den;
}
Fraccion f(3,4);
Fraccion g(f);
26
Diferencia
b) El operador de asignación
Protege contra la "auto-asignación"
Elimina posibles elementos antiguos
Inicializa y copia los nuevos elementos
Variables Dinámicas
SOBRECARGA DE
OPERADORES
<< - >>
cout <<f;
cout<<"la fracción es:"<<f;
cout<<"La suma de"<<f<<" y" <<g<<"es:"<<h;
cin>>f;
29
cout <<f;
cout<<"la fracción es:"<<f;
cout<<"La suma de"<<f<<" y" <<g<<"es:"<<h;
31
COMPOSICIÓN
DE
CLASES
32
Composición de Clases
Relación de pertenencia.
Clase Mixto
class Mixto
{public:
Mixto();
Fraccion Equivalente();
float Equivalente();
void Listar();
private:
int ent;
Fraccion f;
};
34
Clase Curso
class Curso
{public:
Curso(int t=30);
void Inscribir(Alumno&);
void Listar();
double Promedio();
int Aprobados();
int Reprobados();
private:
int N;
char nom[25];
char cod[7];
Alumno v[50];
};
35
Composición de Clases
Constructor Alumno
Alumno::Alumno()
{k=0; t=0;}
Constructor Curso
Curso::Curso(int t)
{N=t; Objeto
cin.getline(nom,25); anónimo
cin.getline(cod,7); Invocación
explícita al
char *x, *y; constructor
int z,c;
for (int i=0;i<N;i++)
{
cout<<"NOMBRE: "; cin.getline(x,20);
cout<<"RUT : "; cin>>y;
cout<<"MAT : "; cin>>z;
cout<<"Carr : "; cin>>c;
Alumno a(x,y,z,c);
v[i]= a; }}
38
Listar
void Curso::Listar()
{for (int i=0;i<N;i++)
T[i].Listar(); }
void main()
{Curso C;
C.Listar();
}
39
Composición de clases
Composición de clases
Composición de clases
Empleado::Empleado( char *n, char*a, float s, int nd, int nm, int na,
int cd, int cm, int ca) : fnac(nd,nm,na), fcontr(cd,cm,ca)
{ strncpy(nom,n,24);
strncpy(app,a,24);
inicializació
sueldo=s;
n de objetos
} de clase
fecha
void Empleado::Imprimir()
{cout<< "Nom: "<<nom; "Apellido: "<< app<<"Sueldo: "<<s;
fnac.Imprimir();
fcontr.Imprimir(); Llamada a métodos
} de la clase Fecha
42
#include "empldef.h"
void main()
{Empleado x("Juan", "Pérez", 650.000,1,10,65,15,10,2000);
x.Imprimir();
}
43
PLANTILLAS
DE
FUNCIONES
44
Plantillas de Funciones
template <classT>
tipo nombre(parámetros)
{sentencias}
45
Ejemplo
Plantillas de Funciones
void main()
{ int V[5];
Crear(V,5);
Listar(V,5);
float X[4];
Crear(X,4);
Listar(X,4);
char C[6];
Crear(C,6);
Listar(C,6);
}
47
Plantillas de Funciones
PLANTILLAS
DE
CLASES
49
Plantillas de clases
Clases
Mecanismo para implementar:
genéricas
template<class T>
class nombre
{private:
Métodos
Variables
public:
Métodos
Variables
}
50
Plantilla de clases
Métodos