Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porRamona Botella Lucero Modificado hace 9 años
1
1 LAS CLASES EN C++ PROGRAMACIÓN ORIENTADA A OBJETOS USANDO C++
2
2 class { private: public: protected: }; Estructura de una clase
3
3 class Uno { private: int k; float x; public: void procedure(int x); int function(); }; Uno a, *b; Ejemplo
4
4 class Empleado { private: char *nom; char *app; float sueldo; public: void verDatos(); float obtenerSueldo(); }; Ejemplo
5
5 Especificador de acceso: public: private: protected: Ningún miembro podrá ser objeto de la clase que está siendo declarada Ningún miembro puede declararse como: auto extern register Conceptos
6
6 public: protected: private: Métodos de cualquier clase Métodos de la clase y sus derivadas Métodos de la clase Control de acceso
7
7 Los métodos se pueden implementar: a.Dentro de la definición de la clase b.A continuación de la definición de la clase Tipo Nombre_Clase::Método(parámetros) { sentencias } Tipo Método(parámetros) { sentencias } Métodos
8
8 Mecanismo mediante el cual el usuario solicita a un objeto que ejecute alguna acción El objeto, si reconoce el mensaje, activa el método adecuado en respuesta al mensaje objeto.método_público(argumentos) Mensajes
9
9 public: Fraccion(); void Listar(); int Numerador(); int Denominador(); float Equivalente(); Interfaz Mecanismo mediante el cual un objeto puede comunicarse con el medio Se materializa a través de los métodos públicos de la clase
10
10 Numerador Denominador != 0 Ambos enteros Crear una fracción con datos desde el teclado Conocer su numerador Conocer su denominador Obtener su equivalente real Clase Fraccion
11
11 num: 5 den: 7 Listar() Numerador() Denominador() Equivalente() f: num: 1 den: 2 Listar() Numerador() Denominador() Equivalente() f1: num: 3 den: 8 Listar() Numerador() Denominador() Equivalente() f2: Objetos de clase Fraccion
12
12 Equivalente 0,333 f 1313 Listar() Numerador() Denominador() Equivalente() Mensajes
13
13 class Fraccion { public: Fraccion(); void Listar(); int Numerador(); int Denominador(); float Equivalente(); private: int num; int den; } Constructor Métodos Atributos Clase Fraccion
14
14 Igual nombre de funciones Se diferencian en : La cantidad de parámetros y Tipo de dato de los parámetros class Fraccion { public: Fraccion(); Fraccion(int,int); void Listar(); i nt Numerador(); … } Sobrecarga de Constructores
15
15 No poseen argumentos, o Los argumentos tienen valores asignados Fracción f; Fraccion() Fraccion(int x=0,int y=1) Constructores por defecto
16
16 class Fraccion { public: Fraccion(); Fraccion(int,int); void Listar(); int Numerador(); int Denominador(); float Equivalente(); private: int num; int den; } Clase Fraccion
17
17 int main() { Fraccion f; Fraccion g(2,3); f.Listar(); cout<<f.Numerador(); cout<<"Equivalente de: "<<endl; cout<<f.Numerador()<<" /" <<f.Denominador() <<": "; cout<<f.Equivalente()<<endl; cout<<g.Numerador()<<" /" <<g.Denominador() <<": "; cout<<g.Equivalente()<<endl; return 0; } Constructores Mensaje Uso de la clase Fraccion
18
18 Fraccion f1; x = f1. Numerador( ); Estático: Fraccion *f1; f1 = new Fraccion( ); x = (*f1).Numerador( ); x = f1->Numerador(); Dinámico: Creación de objetos
19
19 Utilidad: Liberar recursos solicitados por el constructor Objetos en el heap se destruyen con el operador delete No se requiere implementar si no se utiliza almacenamiento dinámico como parte del objeto Se invoca implícitamente cuando finaliza el bloque en fue declarado el objeto Destructores
20
20 int main() { int n,d; Fraccion f1; f1.Imprimir(); cout << f1.Equivalente() << endl; do { cout > n; cout > d; if (d!=0) { Fraccion f2(n, d); f2.Imprimir(); cout << f2.Equivalente() << endl; } } while (d!=0); return 0; } // Creación de f1 // Creación de f2 // Destrucción de f1 // Destrucción de f2 Uso de destructores
21
21 class Complejo { private: float real; float imag; public: Complejo(); Complejo(float); Complejo(float, float); Complejo(Complejo &); void setR(float); void setI(float); float getR(); float getI(); void verComplejo(); ~Complejo(); // Alt 126 }; Clase Complejo
22
22 Complejo::Complejo() { real = 0; imag = 0; } Complejo::Complejo(float x) { real = x; imag = 0; } Complejo::Complejo(float x, float y) { real = x; imag = y; } Complejo::Complejo(Complejo &C) { real = C.real; imag = C.imag; } void Complejo::setR(float x) { real = x; } Implementación clase Complejo
23
23 void Complejo::setI(float y) { imag = y; } float Complejo::getR() { return real; } float Complejo::getI() { return imag; } void Complejo::verComplejo() { cout << " Complejo como par ordenado: " << endl; cout << " (" << real << ", " << imag << ") " << endl; cout << " Complejo en forma binomial: " << endl; cout << real << " + " << imag << "i" << endl; } Complejo::~Complejo() { cout << " Eliminando complejo " << endl; } Implementación clase Complejo
24
24 int main(int argc, char *argv[]) { Complejo C0, C1(1.1), C2(2.1, 2.6), C3(3.1, 3.6); Complejo C4 = C1; Complejo *q, *p = new Complejo(C2); C0.verComplejo(); C1.verComplejo(); C2.verComplejo(); C3.verComplejo(); C4.verComplejo(); C0 = *p; C0.verComplejo(); *q = C1; (*p).verComplejo(); (*q).verComplejo(); delete p; delete q; return 0; } Uso clase Complejo
25
25 class Fecha { private: int dd; int mm; int aa; public: void setDia(int); void setMes(int); void setAño(int); int getDia(); int getMes(); int getAño(); void verFecha(); }; Clase Fecha
26
26 class Empleado { private: char *nombre; char *direccion; long sueldo; Fecha nacim; Fecha contrat; public: void setNombre(char *); void setDireccion(char *); void setSueldo(long); void setNac(Fecha); void setCont(Fecha); char *getNombre(); char *getDireccion(); long getSueldo(); Fecha getNac(); Fecha getCont(); void verEmpleado(); }; Clase Empleado
27
27 void Fecha::setDia(int d) { dd = d; } void Fecha::setMes(int m) { mm = m; } void Fecha::setAño(int a) { aa = a; } int Fecha::getDia() { return dd; } int Fecha::getMes() { return mm; } int Fecha::getAño() { return aa; } void Fecha::verFecha() { cout << “ Dia: " << dd << “ Mes: " << mm << “ Año: " << aa << endl; } Implementación clase Fecha
28
28 void Empleado::setNombre(char *nom) { nombre = new char[strlen(nom)+1]; strcpy(nombre, nom); } void Empleado::setDireccion(char *dir) { direccion = new char[strlen(dir)+1]; strcpy(direccion, dir); } void Empleado::setSueldo(long suel) { sueldo = suel; } void Empleado::setNac(Fecha f) { nacim = f; } void Empleado::setCont(Fecha f) { contrat = f; } char *Empleado::getNombre() { return nombre; } Implementación clase Empleado
29
29 char *Empleado::getDireccion() { return direccion; } long Empleado::getSueldo() { return sueldo; } Fecha Empleado::getNac() { return nacim; } Fecha Empleado::getCont() { return contrat; } void Empleado::verEmpleado() { cout<<"Nombre: "<< nombre << endl; cout<<"Direccion: "<< direccion << endl; cout<<"Sueldo: "<< sueldo << endl; cout<<"Fecha de nacimiento "<< endl; nacim.verFecha(); cout<<"Fecha de contratacion "<< endl; contrat.verFecha(); } Implementación clase Empleado
30
30 int main(int argc, char *argv[]) { Empleado E; Fecha F, G; char *c = new char[10]; long d, m, a, s; cout<<"Ingrese nombre: "; cin.getline(c,10); E.setNombre(c); cout<<"Ingrese direccion: "; cin.getline(c,10); E.setDireccion(c); cout<<"Ingrese sueldo: "; cin>>s; E.setSueldo(s); cout<<"Ingrese fecha de nacimiento "<< endl; cout << " Dia: "; cin >> d; cout << " Mes: "; cin >> m; Uso clase Empleado
31
31 cout << " Año: "; cin >> a; F.setDia(d); F.setMes(m); F.setAgno(a); E.setNac(F); cout<<"Ingrese fecha de contratacion "<< endl; cout << " Dia: "; cin >> d; cout << " Mes: "; cin >> m; cout << " Agno: "; cin >> a; G.setDia(d); G.setMes(m); G.setAgno(a); E.setCont(G); E.verEmpleado(); return 0; } Uso clase Empleado
Presentaciones similares
© 2024 SlidePlayer.es Inc.
All rights reserved.