Programación Orientada a Objetos usando C++

1 Programación Orientada a Objetos usando C++LAS CLASES ...
Author: Andrés Alanis
0 downloads 1 Views

1 Programación Orientada a Objetos usando C++LAS CLASES EN C++

2 TÓPICOS Clases Especificadores de acceso Métodos – Mensajes - InterfazPrototipo Constructores - Destructores Sobrecarga de funciones

3 Ejercicios Fracción Cuenta Corriente Vendedor Alumno Complejos

4 Estructura de una claseclass {private: public: protected: };

5 Ejemplo class Uno {private: int k; float x; public: procedim(int x);int funcion(); }; Uno a, *b; { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://slideplayer.es/2761338/10/images/6/Ejemplo+class+Empleado+%7Bprivate%3A+char+%2Anom%3B+char+%2Aapp%3B+float+sueldo%3B.jpg", "name": "Ejemplo class Empleado {private: char *nom; char *app; float sueldo;", "description": "public: void Imprimir_Datos(); float Mostrar_Sueldo(); };", "width": "800" } 7 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 { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://slideplayer.es/2761338/10/images/7/Conceptos+Especificador+de+acceso%3A.jpg", "name": "Conceptos Especificador de acceso:", "description": "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.", "width": "800" } 8 Atributos de control de accesosFM: Funciones Miembro (Métodos) usuarios en general FM o FM de clases derivadas Sólo FM o amigas public: protected: private: { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://slideplayer.es/2761338/10/images/8/Atributos+de+control+de+accesos.jpg", "name": "Atributos de control de accesos", "description": "FM: Funciones Miembro (Métodos) usuarios en general. FM o FM de clases derivadas. Sólo FM o amigas. public: protected: private:", "width": "800" } 9 Métodos Los métodos se pueden implementar:Dentro de la declarativa de la clase A continuación de la declarativa de la clase Tipo Método(parámetros) {sentencias} Tipo Nombre_Clase::Método(parámetros) {sentencias} { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://slideplayer.es/2761338/10/images/9/M%C3%A9todos+Los+m%C3%A9todos+se+pueden+implementar%3A.jpg", "name": "Métodos Los métodos se pueden implementar:", "description": "Dentro de la declarativa de la clase. A continuación de la declarativa de la clase. Tipo Método(parámetros) {sentencias} Tipo Nombre_Clase::Método(parámetros) {sentencias}", "width": "800" } 10 Método: Constructor Método con el mismo nombre de la clasePropósito explícito: inicializar un objeto Se invoca automáticamente al declarar un objeto de la clase. { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://slideplayer.es/2761338/10/images/10/M%C3%A9todo%3A+Constructor+M%C3%A9todo+con+el+mismo+nombre+de+la+clase.jpg", "name": "Método: Constructor Método con el mismo nombre de la clase", "description": "Propósito explícito: inicializar un objeto. Se invoca automáticamente al declarar un objeto de la clase.", "width": "800" } 11 Método: Constructor Único medio para inicializar un objeto.Cuando una clase tiene un constructor TODOS los objetos de dicha clase son inicializados. NO se puede invocar directamente. { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://slideplayer.es/2761338/10/images/11/M%C3%A9todo%3A+Constructor+%C3%9Anico+medio+para+inicializar+un+objeto..jpg", "name": "Método: Constructor Único medio para inicializar un objeto.", "description": "Cuando una clase tiene un constructor TODOS los objetos de dicha clase son inicializados. NO se puede invocar directamente.", "width": "800" } 12 objeto.método_público(argumentos)Mensaje Mecanismo por el cual el usuario solicita a un objeto que realice alguna acción. El objeto, si reconoce el mensaje, activa el método adecuado en respuesta al mensaje. objeto.método_público(argumentos) { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://slideplayer.es/2761338/10/images/12/objeto.m%C3%A9todo_p%C3%BAblico%28argumentos%29.jpg", "name": "objeto.método_público(argumentos)", "description": "Mensaje. Mecanismo por el cual el usuario solicita a un objeto que realice alguna acción. El objeto, si reconoce el mensaje, activa el método adecuado en respuesta al mensaje. objeto.método_público(argumentos)", "width": "800" } 13 Interfaz Mecanismo por el cual un objeto puede comunicarse con su medio. Está formada por todos los métodos públicos de la clase. public: Fraccion(); void Listar(); int Numerador(); int Denominador(); float Equivalente(); { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://slideplayer.es/2761338/10/images/13/Interfaz+Mecanismo+por+el+cual+un+objeto+puede+comunicarse+con+su+medio.+Est%C3%A1+formada+por+todos+los+m%C3%A9todos+p%C3%BAblicos+de+la+clase..jpg", "name": "Interfaz Mecanismo por el cual un objeto puede comunicarse con su medio. Está formada por todos los métodos públicos de la clase.", "description": "public: Fraccion(); void Listar(); int Numerador(); int Denominador(); float Equivalente();", "width": "800" } 14 Ejemplo1: Fracción Numerador Denominador != 0 Ambos enterosCrear una fracción con datos desde el teclado Conocer su numerador Conocer su denominador Obtener su equivalente real. { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://slideplayer.es/2761338/10/images/14/Ejemplo1%3A+Fracci%C3%B3n+Numerador+Denominador+%21%3D+0+Ambos+enteros.jpg", "name": "Ejemplo1: Fracción Numerador Denominador != 0 Ambos enteros", "description": "Crear una fracción con datos desde el teclado. Conocer su numerador. Conocer su denominador. Obtener su equivalente real.", "width": "800" } 15 Objetos: tipo Fracciónnum: 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: { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://slideplayer.es/2761338/10/images/15/Objetos%3A+tipo+Fracci%C3%B3n.jpg", "name": "Objetos: tipo Fracción", "description": "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:", "width": "800" } 16 Mensajes f 0,333 Equivalente 1 3 Listar() Numerador() Denominador() { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://slideplayer.es/2761338/10/images/16/Mensajes+f+0%2C333+Equivalente+1+3+Listar%28%29+Numerador%28%29+Denominador%28%29.jpg", "name": "Mensajes f 0,333 Equivalente 1 3 Listar() Numerador() Denominador()", "description": "Mensajes f 0,333 Equivalente 1 3 Listar() Numerador() Denominador()", "width": "800" } 17 Clase Fracción class Fraccion {public: Fraccion(); void Listar();int Numerador(); int Denominador(); float Equivalente(); private: int num; int den; } Constructor Métodos Variables miembros { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://slideplayer.es/2761338/10/images/20/Clase+Fracci%C3%B3n+class+Fraccion+%7Bpublic%3A+Fraccion%28%29%3B+Fraccion%28int%2Cint%29%3B.jpg", "name": "Clase Fracción class Fraccion {public: Fraccion(); Fraccion(int,int);", "description": "void Listar(); int Numerador(); int Denominador(); float Equivalente(); private: int num; int den; }", "width": "800" } 21 Uso clase Fracción Mensaje Constructores void main() Fraccion g(2,3);{Fraccion f; Fraccion g(2,3); f.Listar(); cout< cout<<"Equivalente de: "< cout< cout< cout< cout< } Mensaje { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://slideplayer.es/2761338/10/images/21/Uso+clase+Fracci%C3%B3n+Mensaje+Constructores+void+main%28%29+Fraccion+g%282%2C3%29%3B.jpg", "name": "Uso clase Fracción Mensaje Constructores void main() Fraccion g(2,3);", "description": "{Fraccion f; Fraccion g(2,3); f.Listar(); cout { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://slideplayer.es/2761338/10/images/24/Ejemplo%3A+Fracci%C3%B3n+void+main%28%29+%7Bint+n%2Cd%3B+Fraccion+f1%3B+f1.Imprimir%28%29%3B.jpg", "name": "Ejemplo: Fracción void main() {int n,d; Fraccion f1; f1.Imprimir();", "description": "cout

6 Ejemplo class Empleado {private: char *nom; char *app; float sueldo;public: void Imprimir_Datos(); float Mostrar_Sueldo(); }; { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://slideplayer.es/2761338/10/images/17/Clase+Fracci%C3%B3n+class+Fraccion+%7Bpublic%3A+Fraccion%28%29%3B+void+Listar%28%29%3B.jpg", "name": "Clase Fracción class Fraccion {public: Fraccion(); void Listar();", "description": "int Numerador(); int Denominador(); float Equivalente(); private: int num; int den; } Constructor. Métodos. Variables miembros.", "width": "800" } 18 Sobrecarga de funcionesIgual 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(); int Numerador(); : } { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://slideplayer.es/2761338/10/images/18/Sobrecarga+de+funciones.jpg", "name": "Sobrecarga de funciones", "description": "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(); int Numerador(); : }", "width": "800" } 19 Constructores por defectoNo poseen argumentos, o Los argumentos tienen valores asignados. Fracción f; Fraccion() Fraccion(int x=0,int y=1) { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://slideplayer.es/2761338/10/images/19/Constructores+por+defecto.jpg", "name": "Constructores por defecto", "description": "No poseen argumentos, o. Los argumentos tienen valores asignados. Fracción f; Fraccion() Fraccion(int x=0,int y=1)", "width": "800" } 20 Clase Fracción class Fraccion {public: Fraccion(); Fraccion(int,int);void Listar(); int Numerador(); int Denominador(); float Equivalente(); private: int num; int den; } { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://slideplayer.es/2761338/10/images/24/Ejemplo%3A+Fracci%C3%B3n+void+main%28%29+%7Bint+n%2Cd%3B+Fraccion+f1%3B+f1.Imprimir%28%29%3B.jpg", "name": "Ejemplo: Fracción void main() {int n,d; Fraccion f1; f1.Imprimir();", "description": "cout

7 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

8 Atributos de control de accesosFM: Funciones Miembro (Métodos) usuarios en general FM o FM de clases derivadas Sólo FM o amigas public: protected: private:

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

10 Método: Constructor Método con el mismo nombre de la clasePropósito explícito: inicializar un objeto Se invoca automáticamente al declarar un objeto de la clase.

11 Método: Constructor Único medio para inicializar un objeto.Cuando una clase tiene un constructor TODOS los objetos de dicha clase son inicializados. NO se puede invocar directamente.

12 objeto.método_público(argumentos)Mensaje Mecanismo por el cual el usuario solicita a un objeto que realice alguna acción. El objeto, si reconoce el mensaje, activa el método adecuado en respuesta al mensaje. objeto.método_público(argumentos)

13 Interfaz Mecanismo por el cual un objeto puede comunicarse con su medio. Está formada por todos los métodos públicos de la clase. public: Fraccion(); void Listar(); int Numerador(); int Denominador(); float Equivalente();

14 Ejemplo1: Fracción Numerador Denominador != 0 Ambos enterosCrear una fracción con datos desde el teclado Conocer su numerador Conocer su denominador Obtener su equivalente real.

15 Objetos: tipo Fracciónnum: 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:

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

17 Clase Fracción class Fraccion {public: Fraccion(); void Listar();int Numerador(); int Denominador(); float Equivalente(); private: int num; int den; } Constructor Métodos Variables miembros { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://slideplayer.es/2761338/10/images/20/Clase+Fracci%C3%B3n+class+Fraccion+%7Bpublic%3A+Fraccion%28%29%3B+Fraccion%28int%2Cint%29%3B.jpg", "name": "Clase Fracción class Fraccion {public: Fraccion(); Fraccion(int,int);", "description": "void Listar(); int Numerador(); int Denominador(); float Equivalente(); private: int num; int den; }", "width": "800" } 21 Uso clase Fracción Mensaje Constructores void main() Fraccion g(2,3);{Fraccion f; Fraccion g(2,3); f.Listar(); cout< cout<<"Equivalente de: "< cout< cout< cout< cout< } Mensaje { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://slideplayer.es/2761338/10/images/21/Uso+clase+Fracci%C3%B3n+Mensaje+Constructores+void+main%28%29+Fraccion+g%282%2C3%29%3B.jpg", "name": "Uso clase Fracción Mensaje Constructores void main() Fraccion g(2,3);", "description": "{Fraccion f; Fraccion g(2,3); f.Listar(); cout { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://slideplayer.es/2761338/10/images/24/Ejemplo%3A+Fracci%C3%B3n+void+main%28%29+%7Bint+n%2Cd%3B+Fraccion+f1%3B+f1.Imprimir%28%29%3B.jpg", "name": "Ejemplo: Fracción void main() {int n,d; Fraccion f1; f1.Imprimir();", "description": "cout

18 Sobrecarga de funcionesIgual 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(); int Numerador(); : }

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

20 Clase Fracción class Fraccion {public: Fraccion(); Fraccion(int,int);void Listar(); int Numerador(); int Denominador(); float Equivalente(); private: int num; int den; } { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://slideplayer.es/2761338/10/images/24/Ejemplo%3A+Fracci%C3%B3n+void+main%28%29+%7Bint+n%2Cd%3B+Fraccion+f1%3B+f1.Imprimir%28%29%3B.jpg", "name": "Ejemplo: Fracción void main() {int n,d; Fraccion f1; f1.Imprimir();", "description": "cout

21 Uso clase Fracción Mensaje Constructores void main() Fraccion g(2,3);{Fraccion f; Fraccion g(2,3); f.Listar(); cout< cout<<"Equivalente de: "< cout< cout< cout< cout< } Mensaje

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

23 Destructores Utilidad:Liberar recursos solicitados por el constructor. Objeto en el heap: se destruye con el operador delete. No se requiere implementar si no se utiliza almacenamiento dinámico como parte del objeto. Invocación: Se llama en forma implícita cuando una variable está fuera de su alcance o ámbito. (bloque en el que fue declarada).

24 Ejemplo: Fracción void main() {int n,d; Fraccion f1; f1.Imprimir();cout< do {cout<<"Numerador : "; cin>>n; cout<<"Denominador: "; cin>>d; if (d!=0) { Fraccion f2(n,d); f2.Imprimir(); cout< } }while (d!=0); //Se crea el objeto f1 //Creación de f2 //Destrucción f1 //Destrucción f1

25 Ejemplos a desarrollar

26 Ejemplo 1: Cta. Cte Una cuenta corriente se puede representar por :Saldo Operaciones como: Depositar(cantidad) Girar(cantidad) Saldo()

27 Ejemplo 2: Vendedor Registro sobre sus ventas mensuales.Crear un vendedor. Inicializa las ventas mensuales. Registrar las ventas mensuales. Desplegar la venta anual

28 Ejemplo 3: Alumno Registro sobre sus datos generalesRealizar inscripción de una asignatura Realizar un registro de nota de asignatura aprobada. Listar información general del alumno Listar asignaturas inscritas. Listar asignaturas aprobadas

29 Ejemplo 4: Complejos e=5+3i Parte real Parte imaginaria