La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Class Triangulo { float b,h; public: Rectangulo(float X1, float X2) { b = X1; h = X2; } float calcularArea() { return ( (float) b*h/2); } }; void main()

Presentaciones similares


Presentación del tema: "Class Triangulo { float b,h; public: Rectangulo(float X1, float X2) { b = X1; h = X2; } float calcularArea() { return ( (float) b*h/2); } }; void main()"— Transcripción de la presentación:

1 class Triangulo { float b,h; public: Rectangulo(float X1, float X2) { b = X1; h = X2; } float calcularArea() { return ( (float) b*h/2); } }; void main() { Triangulo obj(3,5); cout << “El area es: ” << obj.calcularArea()); } Programación I Programación Orientada a Objetos en C++

2 Fundamentos de C++ Programación I Nombres asignados a variables, métodos y clases para ser identificadas y de forma única y con sentido para el programador. Identificadores:  El primer carácter debe ser letra ó subrayado.  Es un lenguaje sensible a mayúsculas y minúsculas.  Acepta letras, “_” y cifras del 0 al 9.  No se aceptan palabras claves (reservada por C++ para un objetivo determinado)

3 Fundamentos de C++ Programación I Tipos de Datos: CategoríaTipoTamaño Enteros short? int? long? En coma flotante float? double? Caracteres char? String? Lógicos bool?

4 Fundamentos de C++ Programación I Declaración de Variables: Asocia un tipo de dato especificado a un grupo de variables. Se pueden declarar en cualquier parte de un bloque de programa ( entre {} ) ó fuera. Sintaxis: Tipo_Dato variable1, variable2,... ; Ejemplo: String nombre; float angulo=90.5; double velocidad; char sexo;

5 Fundamentos de C++ Programación I Definición de Constantes: Sintaxis: const Tipo_Dato nombreConstante = valor ; Ejemplo: const int MAX=100; const char letra=‘A’; const double v=3.5;

6 Fundamentos de C++ Programación I El archivo de cabecera iostream.h permite a los programas C++ realizar entrada/salida a consola, esto es, entrada por teclado y salida por pantalla. Salida: El flujo utiliza el operador <<, para visualizar la salida al objeto de salida estándar. El flujo de salida cout permite salidas de múltiples valores. cout<<“Introduzca el numero total de personas:”; cout<<“Numero total de personas: ”<<num<< “\n”; cout <<nombre<<“ tiene ”<<edad<<“ años ”<<endl; Entradas y Salidas Básicas

7 Fundamentos de C++ Programación I Entrada: C++ ofrece el objeto cin y el operador >>. int edad; double longitud, peso; String nombre; char carácter; cin>>edad; cin>>longitud>>peso; //para saltar usa espacio en blanco ó Enter Para introducir una cadena de caracteres: cin.getline(nombre,100); //Lee una cadena de máximo 100 caracteres y la guarda en nombre. Para leer un carácter cin.get(caracter); Entradas y Salidas Básicas

8 Fundamentos de C++ Programación I Entrada: Para restaurar el estado del flujo de entrada se usan las funciones: Entradas y Salidas Básicas cin.clear(); Restaura el flujo del estado y lo pone en true, que significa todo bien. cin.ignore(); Reinicia los indicadores de estado

9 Fundamentos de C++ Programación I Manipuladores de iostream: endl ends flush ws dec oct hex setw(arg) setprecision(arg) setbase(int b) setfill(char car) left right Entradas y Salidas Básicas fixed showbase noshowbase showpos noshowpos showpoint noshowpoint skips noskips

10 Programación I En C++ las variables pueden ser declaradas en cualquier lugar de un bloque. Esto permite acercar la declaración de las variables al lugar en que se utilizan por primera vez. Las variables auto declaradas de esta forma existen desde el momento en que se declaran, hasta que se llega al fin del bloque correspondiente. En C++ la variable que sirve de contador al bucle puede declararse e inicializarse en la propia sentencia for. Declaraciones en C++ Fundamentos de C++

11 Programación I Declaraciones en C++ Fundamentos de C++ Por ejemplo: for (double suma=0.0, int i=0; i<n; i++) suma += a[i]; Las variables suma e i son declaradas y creadas como double e int en el momento de iniciarse la ejecución del bucle for.

12 Introducir Clases en C++ Programación I Estructuras que contienen declaraciones de datos y declaraciones de funciones. Las funciones se denominan funciones miembro, e indican lo que puede hacer la clase. Las variables definidas dentro de la clase se denominan variables miembro o atributos de la clase. Las variables instanciadas a partir de clases son los objetos.

13 Introducir Clases en C++ Programación I Formato: class nombre_de_la_clase{ private: Lista de atributos y/o metodos public: Lista de atributos y/o metodos; }; Donde nombre_de_la_clase corresponde al nombre que identifica a la clase, y Lista_de_miembros, corresponde a los datos y funciones miembros. La definición de una clase no reserva espacio en memoria. Este almacenamiento se realiza cuando el programa está en ejecución, cuando se instancia una clase o se crea un objeto.

14 Programación I Los especificadores de acceso public, protected y private, son los que definen el acceso a los datos y a las funciones miembros. Introducir Clases en C++ Ejemplo de declaración de una clase: class Punto{ private: int X; int Y; public: int RetornarX(); void FijarX(int); };

15 Objeto de una Clase Programación I El objeto es la instancia de una clase. Formato: Nombre_de_la_clase nombre_objeto; Con el objeto de la clase punto: Punto p; El acceso a cada miembro individual de la clase se realiza utilizando el operador punto (.) Por ejemplo: Punto p; p.FijarX(250); cout <<“Coordenada X de p es:”<<p.RetornarX();

16 Objeto de una Clase Programación I Se puede asignar un objeto de una clase a otro objeto. C++ realiza una copia bit a bit de todos los miembros del dato. Todos los datos contenidos físicamente en el área de datos del objeto fuente se copian en el objeto receptor. Ejemplo: Punto p1; Punto p2; p2 = p1;

17 Implementación de Clases Programación I Generalmente, la implementación de una clase se realiza en un archivo independiente, de extensión.cpp ó.h lo que ayuda a la reutilización del código. Posteriormente se pueden incluir como archivos de cabecera en un prograna usando la directiva de compilador #include.

18 Control de Acceso a los Métodos Cuando se crea una nueva clase en C++, se puede especificar el nivel de acceso que se quiere para las variables de instancia y los métodos definidos en la clase por medio de los siguientes modificadores de acceso:public Cualquier clase puede acceder a las propiedades y métodos públicos.protected Sólo las clases derivadas y aquellas situadas o no en el mismo paquete, pueden acceder a las propiedades y métodos protegidos. Programación I

19 Control de Acceso a los Métodos private Las variables y métodos privados sólo pueden ser accedidos desde dentro de la clase. Si en la definición de la clase se obvia el modificador de acceso, la clase lo asume como privado (private). Programación I

20 Funciones Miembro o Métodos Programación I Son las que se incluyen dentro de la clase y determinan el comportamiento del objeto. Se definen de manera similar a cualquier otra función pero requiere incluir el operador de resolución de ámbito :: en la definición de la función. Formato: tipo_devuelto nombre_clase::nombre_funcion (lista_parametros){ Lista_de_instrucciones; }

21 Definición de Funciones Miembro o Métodos Programación I Funciones en Línea y Fuera de Línea: Cuando las funciones miembro se definen dentro de la definición de la clase, se denominan funciones en línea. Cuando se tienen funciones de código muy grandes, es mejor codificar sólo el prototipo de la función dentro del bloque de declaraciones de la clase y codificar la implementación de la función en otro archivo aparte. Esto es cuando se denomina función fuera de línea.

22 Definición de Funciones Miembro o Métodos Programación I class Punto{ private: int X; int Y; public: void visualizar (void){ cout<<“Coord X es:”<<X; cout<<“Coord Y es:”<<Y; } }; class Punto{ private: int X; int Y; public: void visualizar( ); }; void Punto::visualizar( ){ cout<<“Coord X es:”<<X; cout<<“Coord Y es:”<<Y; } Función definida en Línea Fuera de Línea:

23 Clases y Objetos Programación I #include “conio.h” #include “iostream” using namespace std; class Estudiante{ //Definición de clase private: char nombre[25]; //Atributos de la clase int cedula; public: void leerDatos(); //Función miembro void mostrarDatos(); //Funcion miembro }; void Estudiante::leerDatos() //Imp. de funcion miembro { cout<<“\nNombre: ”; cin.get(nombre,24); cout >cedula; } void Estudiante::mostrarDatos() //Imp. de funcion miembro { cout<<“\nNombre: ”<<nombre; cout<<“\nCedula: ”<<cedula; }

24 Clases y Objetos Programación I void main() { Estudiante Objeto; //Instanciación de objetos Objeto.leerDatos (); //Llamada a leerDatos con Objeto Objeto.mostrarDatos(); //Llamada a mostrarDatos con Objeto getch(); }

25 Para Varios Estudiantes… Vectores de Objetos Programación I void main() { Estudiante Vector[10]; //Instanciación de Vector de obj. estático int tam; cout<<“Cantidad de Estudiantes: ”; cin>>tam; Estudiante *vector = new Estudiante[tam]; //Instanciación de vector de obj. dinámico for(int i=0; i <tam; i++){ vector[i].leerDatos(); vector[i].mostrarDatos(); } getch(); }

26 Constructores Es una función miembro con un propósito específico que se ejecuta automáticamente cuando se crea un objeto de una clase. Generalmente, un constructor se utiliza para inicializar los datos miembros de una clase. No retorna ningún valor (ni un void), pero si puede tomar los parámetros que requiera. Debe tener el mismo nombre de la clase. Programación I

27 Constructores #include “iostream.h” #include “conio.h” class cubo{ int alto; int ancho; int lado; public: cubo(); //Constructor por defecto cubo(int x, int y, int z); //Constructor alternativo int getAlto(); //… Definición de otras funciones }; Programación I

28 Constructores cubo::cubo() { alto=5; } cubo::cubo(int x, int y, int z) { alto = x; ancho = y; lado = z; } int cubo::getAlto() { return alto; } void main (void) { cubo a; //Ejemplo de uso del Constructor por defecto cout<<“\nEl alto de a es: ”<<a.getAlto(); cubo b(3,2,6); //Ejemplo de uso del Constructor alternativo cout<<“\nEl alto de b es: ”<<b.getAlto(); getch(); } Programación I

29 Constructores Cuando se crea un objeto automáticamente se ejecuta el constructor por defecto. Tal es el caso de cubo a; Cuando se crea un objeto, se pasan los parámetros necesarios para su instanciación, como: cubo b(3,2,6); Esta declaración crea una instancia c de la clase cubo, pasando los parámetros al constructor con los valores especificados. Otra forma de crear un objeto es: cubo *c=new cubo(3,2,6); El operador new invoca de forma automática al constructor del objeto que se crea. Programación I

30 Destructores Son las funciones que se ejecutan automáticamente cuando se destruye un objeto. Tienen el mismo nombre del constructor, pero se diferencian en que está precedido del carácter ~ No deben tener ningún tipo de retorno. No pueden aceptar parámetros. Sólo puede existir un destructor. Generalmente se utilizan para liberar memoria que fue asignada por el constructor. Programación I

31 Destructores C++ crea un destructor vacío por defecto en caso de no existir uno declarado explícitamente. Si el ámbito del objeto es local, el destructor es llamado cuando el control es pasado fuera de su bloque de definición. Si el objeto fue creado dinámicamente (con new) el destructor es llamado cuando se invoca el operador delete. Programación I

32 Destructores class cubo{ private: int alto; int ancho; int lado; public: cubo(int x, int y, int z){alto=x; ancho=y; lado=z; } //Constructor ~cubo(); //Destructor //…definición de otras funciones }; cubo::~cubo(){ cout<<“Cubo destruido \n”; } void main(){ cubo c(2,3,4); c.~cubo(); getch(); } Programación I

33 Destructores class Ejemplo{ private: int valor; public: Ejemplo(){valor=0; } void Delete() {delete this; } }; void main() { Ejemplo *S4=new Ejemplo(); delete S4; //No se puede hacer S4->Delete(); // OK } Programación I

34 Herencia La Herencia es una de las característica de C++ que da más poder al concepto de clase. C++ soporta Herencia simple y herencia múltiple. La Herencia Simple es cuando se tiene una sola clase padre y la Herencia Múltiple cuando se tiene mas de una clase padre. Programación I

35 Herencia Simple #include “iostream” using namespace std; class Caja{ //Clase Padre private: int ancho, alto; public: void DefinirAncho(int an) {ancho=an;} void DefinirAlto(int al) {alto=al;} }; class CajaColor : public Caja { //Clase Hija int color; public: void DefinirColor(int c){color=c;} }; void main() { CajaColor cc; cc.DefinirColor(5); //Función no heredada cc.DefinirAncho(3); //Función heredada cc.DefinirAlto(50); //Función heredada } Programación I

36 Herencia Simple Si la herencia es public, la clase hija podrá usar los atributos y métodos de la sección pública de la clase padre en forma pública, es decir desde el main. Podrá usar la sección protegida pero desde dentro de sus métodos. class CajaColor : public Caja { }; Si la herencia es protected, la clase hija podrá usar los atributos y métodos de la sección pública y protegida de la clase padre pero desde dentro de sus métodos. Haciéndolos dentro de ella protegidos. No tendrá acceso desde el main. class CajaColor : protected Caja { }; Programación I

37 Herencia Simple Si la herencia es private, la clase hija podrá usar los atributos y métodos de la sección pública y protegida de la clase padre pero desde dentro de sus métodos. Haciéndolos dentro de ella privados. No tendrá acceso desde el main. class CajaColor : private Caja { }; Si no se coloca el tipo de herencia se asume protegida class CajaColor : Caja { }; La sección privada de una clase padre es no accesible desde una clase hija. Programación I

38 Herencia Simple Programación I m Programa 1 m Programa 2 m Programa 3 Archivo: Ejemplos de Herencia.doc

39 Herencia: Resolución de Ambigüedades Dos clases con funciones miembro con el mismo nombre. #include “conio.h” #include “iostream” using namespace std; class A { public: int funcion() {return 1; } }; class B: public A { public: int funcion() {return 2; } }; void main() { B b1; cout << b1.funcion()<<endl; cout << b1.A::funcion(); getch(); } Programación I void main() { B* b2= new B; cout funcion()<<endl; cout A::funcion(); getch(); }

40 Herencia Múltiple Programación I class Circulo{ float radio; public: Circulo(float r) {radio = r;} float Area() {return radio*radio*3.14;} }; class Mesa { float altura; public: Mesa(float h) {altura=h;} float Altura() {return altura;} }; class Mesa_Redonda: public Mesa, public Circulo{ char color[15]; char modelo[25]; public: Mesa_Redonda(char *, char *); }; MesaCirculo Mesa Redonda color modelo altura radio

41 Herencia Múltiple Programación I class A{ public: int valor; }; class B: public A{}; class C: public A{}; class D: public B{}, public C{ public: int Valor() {return valor; } // valor es ambiguo ERROR int Valor(){return C::valor; }; // valor no ambiguo void main(){ D d; int v=d.B::valor; //Referencia sin ambiguedades D* objeto = new D; int w=objeto->B::valor } //Referencia sin ambiguedades AA BC D

42 Invocar Constructores de la Clase Padre Programación I #include “iostream.h” #include “conio.h” class Empleado{ string nombre; float sueldo; public: Empleado(string xnom, float xsue) { nombre=xnom; sueldo=xsue; } string getNom(){ return nombre; } float getSue(){ return sueldo; } }; class Manager : public Empleado { string departamento; public: Manager(string n, float s, string d); string getDep(){ return departamento; } }; Manager::Manager(string n, float s, string d) : Empleado(n, s) { departamento=d; }

43 Invocar Constructores de la Clase Padre Programación I void main(){ Manager supervisor(“Luis Perez”, 500000.0, ”Ventas”); cout<<"\nNombre: "<<supervisor.getNom(); cout<<"\nSueldo: "<<supervisor.getSue(); cout<<"\nDepartamento: "<<supervisor.getDep(); getch(); } Se invoca al constructor alternativo de la clase Manager y éste constructor antes de ejecutarse invoca al constructor alternativo de la clase Padre (Empleado)

44 Herencia Múltiple Programación I m Programa 4 Archivo: Ejemplos de Herencia.doc

45 Funciones Amigas Programación I Existen funciones que no pertenecen a una clase pero se pueden declarar como amigas de ella y así tener el derecho de acceder a la parte privada de la misma. #include ”iostream.h” #include “conio.h” class numero { friend void asignar_valor(numero *, int ); int x; public: numero(){x=0;} void imprimir(); }; void numero::imprimir(void) { cout << x << endl; } void asignar_valor (numero *c, int nx) { c->x = nx; }

46 Funciones Amigas Programación I void main() { int n; numero m; cout<<"El valor de la variable x antes de activar la funcion amiga: "; m.imprimir(); cout<<"Dar un valor para x:"; cin>>n; asignar_valor(&m, n); asignar_valor(&m, n); //como no pertenece a la clase se llama sin objeto cout<<"El valor de la variable x después de activar la funcion amiga: "; m.imprimir(); cout<<"\nPresione una Tecla para Continuar"; getch(); }

47 :: Prof. Yeniffer Peña Programación I Programación Orientada a Objetos Finalización


Descargar ppt "Class Triangulo { float b,h; public: Rectangulo(float X1, float X2) { b = X1; h = X2; } float calcularArea() { return ( (float) b*h/2); } }; void main()"

Presentaciones similares


Anuncios Google