1 / 31

LAS CLASES EN C++

PROGRAMACIÓN ORIENTADA A OBJETOS USANDO C++. LAS CLASES EN C++. Estructura de una clase. class <nombre> { private : <datos privados> <métodos privados> public : <datos públicos> <método públicos> protected : <datos protegidos> <método protegidos> };. Ejemplo. class Uno {

chavi
Download Presentation

LAS CLASES EN C++

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. PROGRAMACIÓN ORIENTADA A OBJETOS USANDO C++ LAS CLASES EN C++

  2. Estructura de una clase class <nombre> { private: <datos privados> <métodos privados> public: <datos públicos> <método públicos> protected: <datos protegidos> <método protegidos> };

  3. Ejemplo class Uno { private: int k; float x; public: void procedure(int x); int function(); }; Uno a, *b;

  4. Ejemplo class Empleado { private: char *nom; char *app; float sueldo; public: void verDatos(); float obtenerSueldo(); };

  5. Conceptos • 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

  6. Control de acceso Métodos de cualquier clase Métodos de la clase y sus derivadas Métodos de la clase public: protected: private:

  7. Métodos Los métodos se pueden implementar: • Dentro de la definición de la clase • A continuación de la definición de la clase Tipo Método(parámetros) { sentencias } Tipo Nombre_Clase::Método(parámetros) { sentencias }

  8. Mensajes • 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)

  9. 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 public: Fraccion(); void Listar(); int Numerador(); int Denominador(); float Equivalente();

  10. Clase Fraccion • Numerador • Denominador != 0 • Ambos enteros • Crear una fracción con datos desde el teclado • Conocer su numerador • Conocer su denominador • Obtener su equivalente real

  11. f: f1: f2: num: 5 den: 7 num: 1 den: 2 num: 3 den: 8 Listar() Numerador() Denominador() Equivalente() Listar() Numerador() Denominador() Equivalente() Listar() Numerador() Denominador() Equivalente() Objetos de clase Fraccion

  12. f 1 3 0,333 Equivalente Listar() Numerador() Denominador() Equivalente() Mensajes

  13. Constructor Métodos Atributos Clase Fraccion class Fraccion { public: Fraccion(); void Listar(); int Numerador(); int Denominador(); float Equivalente(); private: int num; int den; }

  14. Sobrecarga de Constructores • 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(); … }

  15. Fraccion() Fraccion(int x=0,int y=1) Fracción f; Constructores por defecto • No poseen argumentos, o • Los argumentos tienen valores asignados

  16. Clase Fraccion class Fraccion { public: Fraccion(); Fraccion(int,int); void Listar(); int Numerador(); int Denominador(); float Equivalente(); private: int num; int den; }

  17. Uso de la clase Fraccion Constructores 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; } Mensaje

  18. Creación de objetos Estático: Fraccion f1; x = f1. Numerador( ); Dinámico: Fraccion *f1; f1 = new Fraccion( ); x = (*f1).Numerador( ); x = f1->Numerador();

  19. Destructores • Utilidad: • Liberar recursos solicitados por el constructor • Objetos en el heap se destruyen con el operador delete • Nose 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

  20. // Creación de f1 // Creación de f2 // Destrucción de f2 // Destrucción de f1 Uso de destructores int main() { int n,d; Fraccion f1; f1.Imprimir(); cout << f1.Equivalente() << endl; do { cout << "Numerador : "; cin >> n; cout << "Denominador: "; cin >> d; if (d!=0) { Fraccion f2(n, d); f2.Imprimir(); cout << f2.Equivalente() << endl; } } while (d!=0); return 0; }

  21. Clase Complejo 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 };

  22. Implementación clase Complejo 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; }

  23. Implementación clase Complejo 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; }

  24. Uso clase Complejo 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; }

  25. Clase Fecha 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(); };

  26. Clase Empleado 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(); };

  27. Implementación clase Fecha 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; }

  28. Implementación clase Empleado 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; }

  29. Implementación clase Empleado 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(); }

  30. Uso clase Empleado 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;

  31. Uso clase Empleado 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; }

More Related