La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

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

Presentaciones similares


Presentación del tema: "1 LAS CLASES EN C++ PROGRAMACIÓN ORIENTADA A OBJETOS USANDO C++"— Transcripción de la presentación:

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


Descargar ppt "1 LAS CLASES EN C++ PROGRAMACIÓN ORIENTADA A OBJETOS USANDO C++"

Presentaciones similares


Anuncios Google