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

1 1 LAS CLASES EN C++ PROGRAMACIÓN ORIENTADA A OBJETOS US...
Author: Ramona Botella Lucero
0 downloads 0 Views

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

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 d; if (d!=0) { Fraccion f2(n, d); f2.Imprimir(); cout

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

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

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

30 30 int main(int argc, char *argv[]) { Empleado E; Fecha F, G; char *c = new char[10]; long d, m, a, s; cout

31 31 cout > a; F.setDia(d); F.setMes(m); F.setAgno(a); E.setNac(F); cout a; G.setDia(d); G.setMes(m); G.setAgno(a); E.setCont(G); E.verEmpleado(); return 0; } Uso clase Empleado