• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Cap%c3%8 dtulo+1+programacion+orientada+a+objetos
 

Cap%c3%8 dtulo+1+programacion+orientada+a+objetos

on

  • 1,121 views

programacion orientada a objetos

programacion orientada a objetos

Statistics

Views

Total Views
1,121
Views on SlideShare
1,121
Embed Views
0

Actions

Likes
0
Downloads
14
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Cap%c3%8 dtulo+1+programacion+orientada+a+objetos Cap%c3%8 dtulo+1+programacion+orientada+a+objetos Presentation Transcript

    • Programación Orientada a Objetos (POO) Abel Federico Pérez Hernández
    • Introducción Años 50s Lenguaje Lenguaje Ensamblador FORTRAN Código espaguetti en programas de miles de líneas Programas pequeños Años 60s y 70s Programas estructurados: se basan en estructuras de control (secuencia, Programación condicional e iteración), uso mínimo de estructurada GOTO y subrutinas independientes que soportan recursividad y variables locales,Programas mayores e.g. Algol y Pascalde 50,000 líneas Abel Federico Pérez Hernández 2
    • Programación Orientada a Objetos (POO)Objetivo: permitir al desarrollador realizar programasmás fáciles de escribir, de mantener y de reutilizar.Expresa un programa en términos de un conjunto deobjetos que colaboran entre si para realizar tareas. o3 o1 Calcular o1 media o2 Programa Abel Federico Pérez Hernández 3
    • Programación Orientada a Objetos (POO)La POO es una evolución de la PE que plasma en eldiseño de una familia de lenguajes conceptos que existíanpreviamente con algunos nuevos.La POO se basa en lenguajes que soportan sintáctica ysemánticamente la unión entre tipos de datos abstractos ysus operaciones (clase).La POO incorpora en su entorno de ejecución mecanismocomo el polimorfismo y el envío de mensajes entreobjetos. Abel Federico Pérez Hernández 4
    • Programación Orientada a Objetos (POO)Un objeto está formado de datos yprocedimientos relacionados.El programador piensa en términos de objetos.Primero definen objetos para luego enviarlesmensajes solicitándoles que ejecuten susmétodos por si mismos. Abel Federico Pérez Hernández 5
    • Conceptos de la POOObjeto: entidad provista de: estado, i.e. propiedades externas e internas comportamiento, i.e. métodos identidad, i.e. propiedad que lo diferencía del restoClase: definiciones del estado y del comportamiento de untipo de objeto concreto.Instanciación: lectura de las definiciones de una clase y lacreación de un objetoAbel Federico Pérezde ellas. a partir Hernández 6
    • Conceptos de la POOMétodo: algoritmo asociado a un objeto (o clase deobjetos), cuya ejecución se desencadena tras larecepción de un mensaje.Un mensaje puede producir: Un cambio en las propiedades del objeto o La generación de un nuevo mensaje que será enviado a otro objetoMensaje: una comunicación dirigida a un objeto que leordena que ejecute uno de sus métodos. Abel Federico Pérez Hernández 7
    • Conceptos de la POOPropiedad externa: contenedor de un tipo de datosasociado a un objeto (o clase de objetos): Permite que los datos sean visibles desde el exterior del objeto Su valor puede ser alterado por algún métodoPropiedad interna: estado invisible de los objetos, queúnicamente puede ser accedido por un método delobjeto. Abel Federico Pérez Hernández 8
    • Mecanismo de encapsulaciónDefinición: permite reunir todos los elementos quepueden considerarse pertenecientes a una mismaentidad, al mismo nivel de abstracción nombre_Alumno Alumno Curso curp dirección nombre nombre teléfono curp calificación nombre_Curso dirección … calificación teléfono … …Aumenta la cohesión de los componentes de sistemaSuele ser confundido con el principio de ocultamiento Abel Federico Pérez Hernández 9
    • Principio de ocultamientoDefinición: mecanismo que protege datos y métodoscontra cualquier interferencia o mal uso. Interfaz propiedades Empaquetamiento mediante un LOO Objeto métodos Privados: sólo los conoce y son accesibles por otra parte del objeto, i.e. una parte del programa que esta fuera del objeto no puede accederlos. Públicos: otras partes del programa pueden accederlos… se utilizan para ofrecer una interfaz controlada a las partes privadas del objeto. Abel Federico Pérez Hernández 10
    • Ejemplo: bibliotecas “stdio.h” y “math.h”Encapsulación: Stdio contiene los prototipos de las funciones y tipos para manipular datos de entrada y salida. Math contiene los prototipos de las funciones y definiciones para el uso y manipulación de funciones matemáticas.Ocultamiento: Si se utiliza una función de biblioteca, e.g. printf() o cos(), se utiliza una rutina de caja negra cuya parte interna no se puede modificar. Se crean e inicializan diversas variables privadas (ocultas e inaccesibles). Hernández Abel Federico Pérez 11
    • PolimorfismoDefinición: cualidad que permite que un nombre se usepara varios propósitos relacionados, pero técnicamentediferentes.En POO, el polimorfismo permite usar un nombre paraespecificar una clase general de acciones. C++ Tipo de dato Clase general Acción de acciones específica Abel Federico Pérez Hernández 12
    • Ejemplo de la vida diariaVolante de un automovil funciona igual si utilizamos: Dirección mecánica Dirección asistida Dirección hidráulica … Diferentes mecanismos de direcciónMisma interfaz Abel Federico Pérez Hernández 13
    • Polimorfismo aplicado a funciones Contra ejemplo: el cálculo del valor absoluto en C requiere tres funciones, abs(), labs() y fabs(), para entero, entero largo y valor real, respectivamente. Ejemplo: C++ define la función abs() donde el tipo de dato (e.g. entero, largo o real) utilizado para llamar la función determina que versión específica se utiliza. o Implementación de abs() enter entero largo abs() Implementación de labs() realInterfaz genérica Implementación de fabs() Abel Federico Pérez Hernández 14 (multi-métodos)
    • Polimorfismo aplicado a funcionesVentajas: Ayuda a reducir la complejidad permitiendo que la misma interfaz se utilice para especificar una clase general de acción. El compilador selecciona la acción específica (implementación) que se aplica a cada situación. Abel Federico Pérez Hernández 15
    • Polimorfismo aplicado a operadores aritméticosLa mayoría de los lenguajes de programación proveenuna aplicacion limitada del polimorfismo de operadoresaritméticos: e.g. en lenguaje C, el signo + se utiliza para añadir enteros, enteros largos, caracteres y reales. El compilador automáticamente sabe que tipo de aritmética debe aplicar.En C++, se puede aplicar este concepto a otros tipos dedatos definidos por el usuario. Abel Federico Pérez Hernández 16
    • Ejemplo de una lista Substituir objetos con cliente Lista interfaces idénticas en tiempo … insert(i) de ejecución. extract(i) Simplificar la definición del cliente. Desacoplar objetos entre si. Pila Implementación Cola Implementación LIFO FIFO insert(i) insert(i) extract(i) extract(i)• Mismos tipos de datos• Aplicación sobre un conjunto de métodos Abel Federico Pérez Hernández 17
    • Herencia Definición: proceso mediante el cual un objeto puede adquirir las propiedades de otro. Permite que un objeto soporte el concepto de clasificación jerárquica: General + Obra-hombre es parte de Estructura EdificioCasa - Abel Federico Pérez Hernández 18
    • HerenciaEn cualquier caso, la clase hija hereda todas lascualidades asociadas con la clase padre y le añade suspropias características definitorias. Organismos vivos es parte de Plantas Vegetales ApioSin el uso de clasificaciones jerárquicas cada objetotendría que definir todas las características que serelacionan con él explícitamente. Abel Federico Pérez Hernández 19
    • Lenguajes Orientados a ObjetosAction Script 3 Lexico (en castellano)Ada Objetive-CC++ OcamlC# OzVB.NET PerlVisual FoxPro PHP (versión 5)Clarion PowerBuilderBuilder C++ PythonDelphi RubyHarbour SmalltalkEiffel Magik (SmallWorld)Java Abel Federico Pérez Hernández 20
    • E/S en C++Es posible utilizar las funciones printf() y scanf(), pero C++ ofreceun método nuevo y mejor: Operador de salida << Operador de entrada >> Nota: en C y C++ << y >> también son operadores de desplazamiento (SOBRECARGA DE OPERADORES)Ejemplos de salida con <<: cout << expression; Flujo predefinido que se enlaza automáticamente con el dispositivo de salida (pantalla) en tiempo de ejecución Abel Federico Pérez Hernández 21
    • E/S en C++Ejemplos de <<: permite mostrar cualquier tipo básico deC++ cout << “Muestra esta cadena en pantallan”; cout << 100.99;Ejemplos de >>: permite introducir cualquier tipo básicode C++ desde el teclado cin >> variable; int num; cin >> num; Abel Federico Pérez Hernández 22
    • Ejemplo #1: muestra una cadena, dos enteros y un real doble#include <iostream.h> //Operadores de E/Smain(){ int i, j; double d; i=10; j=20; d=99.101; cout << “Estos son algunos valores: ” cout << i; cout << ‘ ‘; cout << j; cout << ‘ ‘; cout << d; return 0; /*devolver un valor conocido al proceso de llamada (SO) en vez de un valor indefinido */} Abel Federico Pérez Hernández 23
    • Ejemplo #2: mejora del ejemplo precedente#include <iostream.h>main(){ int i, j; double d; i=10; j=20; d=99.101; cout << “Estos son algunos valores: ” /* Muestra más de un valor en una sola expresión de E/S */ cout << i << ‘ ‘ << j << ‘ ‘ << d; return 0;} Abel Federico Pérez Hernández 24
    • Ejemplo #3: pide un valor entero#include <iostream.h>main(){ int i; cout << “Introduzca un valor: ”; cin >> i; cout << “Este es su número: ” << i << “n”; return 0;} Abel Federico Pérez Hernández 25
    • Ejemplo #4: pide un entero, un real y unacadena en una sola sentencia de entrada#include <iostream.h>main(){ int i; float f; char s[80]; cout << “Introduzca un entero, un real y una cadena: ”; cin >> i >> f >> s; cout << “Estos son sus datos: ”; cout << i << ‘ ‘ << f << ‘ ‘ << s; return 0;} Abel Federico Pérez Hernández 26
    • Salida del ejemplo #4Los elementos de datos individuales pueden separarsemediante: espacios en blanco, tabuladores y caracteres denueva línea Entrada del programa:10 100.12 Esto es una pruebaLectura de una cadena: la entrada se detendrá cuando se leael primer espacio en blanco Salida del programa:10 100.12 EstoNota: el resto de la cadena queda en un búfer de entradaesperando una operación posterior ¿Cuál es la salida? Abel Federico Pérez Hernández 27
    • Salida del ejemplo #4Los elementos de datos individuales pueden separarsemediante: espacios en blanco, tabuladores y caracteresde nueva línea Entrada del programa:10 100.12 Esto es una prueba [ENTER]Lectura de una cadena: la entrada se detendrá cuandose lea el primer espacio en blanco Salida del programa:10 100.12 EstoNota: el resto de la cadena queda en un búfer deentrada esperando una operación posterior Abel Federico Pérez Hernández 28
    • Ejemplo #5: efecto de la entrada con buffer de línea#include <iostream.h>main(){ char ch; /* Por omisión, toda entrada es con búfer de línea, i.e. no se pasa ninguna información al programa C++ hasta que se pulsa ENTER */ cout << “Introduzca teclas, x para parar: n”; do { cout << “: ”; cin >> ch; } while (ch != ‘x’); return 0;} Abel Federico Pérez Hernández 29
    • Comentarios en C++C++ propone dos formas diferentes de hacercomentarios: Forma #1: es posible crear comentarios en varias líneas /* comentario … */ Forma #2: sólo es posible hacer comentarios de una línea // comentario [retorno de carro y avance de línea] Abel Federico Pérez Hernández 30
    • Ejemplo #1: combinación de comentarios en estilos C y C++/* Este es un comentario al estilo de C. Este programa determina si un entero es par o impar*/#include <iostream.h>main () { int num; //comentario de una línea en C++ //leer el número cout << “Introduzca el número a probar: “; cin >> num; //ver si es par o impar if((num%2)==0) cout << “El número es parn”; else cout << “El número es imparn”; return 0;} Abel Federico Pérez Hernández 31
    • Ejemplo #2: anidamiento de comentariosLos comentarios al estilo de C NO se pueden anidar:/* comentario /* comentario … */*/Es posible anidar un comentario de una sola línea de C++ dentro de un comentario de varias líneas de C:/* Este es un comentario de varias líneas en el cuál // se anidó un comentario de una línea Aquí termina el comentario de varias líneas*/ Abel Federico Pérez Hernández 32
    • ClasesDefinición: mecanismo para crear objetos Declaraciónclass nombre-clase { funciones y variables privadaspublic: Miembros de la clase funciones y variables públicas} lista de objetos; La lista de objetos es opcional nombre-clase es un nuevo nombre de tipo que se utiliza para declarar objetos Abel Federico Pérez Hernández 33
    • Clases Por omisión, todas las funciones y variables declaradas en una clase son privadasclass nombre-clase { Accesibles por funciones y variables privadas otros miembros de esta clasepublic: Accesibles por funciones y variables públicas otros miembros de} lista de objetos; esta clase y por cualquier otra parte del programa que contenga la clase Abel Federico Pérez Hernández 34
    • Ejemplo de declaración de una clase en C++class myclass { //privado para myclass int a;public: void set_a(int num); int get_a();}; Solo los miembros set_a(int num) y get_a() pueden acceder a la variable a Los miembros set_a(int num) y get_a() pueden ser accedidos por cualquier parte del programa Abel Federico Pérez Hernández 35
    • Definición de funciones miembro Operador de resolución del ámbito (asociación)tipo nombre-clase::nombre-func(lista-parámetros){ ...//cuerpo de la función} Abel Federico Pérez Hernández 36
    • Ejemplo de definición de funciones miembro/* set_a() y get_a() (públicos) puedenacceder directamente a a (privado) porqueson miembros de myclass */void myclass::set_a(int num) { a = num;}int myclass::get_a() { return a;} Abel Federico Pérez Hernández 37
    • Declaración de objetos La declaración de myclass no definió ningún objeto, sólo definió un tipo:class myclass { //privado para myclass int a;public: void set_a(int num); int get_a();}; Para crear un objeto, se utiliza el nombre de clase como especificador de tipo:myclass ob1, ob2; //objetos de tipo myclass Abel Federico Pérez Hernández 38
    • Diferencia entre declaración de clases y declaración de objetosDeclaración de clase es una abstracción lógica que define unnuevo tipo que determina cómo será un objeto de ese tipo.Declaración de un objeto crea una entidad física de ese tipo. Myclass myclass a ocupa set_a(int num) get_a() Espacio de memoria Abel Federico Pérez Hernández 39
    • Referencia a miembros públicosUna vez creado un objeto de una clase, el programa puedereferenciar sus miembros públicos utilizando el operadorpunto:ob1.set_a(10); //versión de ob1 de a con 10ob2.set_a(99); //versión de ob2 de a con 99Cada objeto contiene su propia copia de cada variabledeclarada dentro de la clase: La variable a vinculada ob1 es distinta de la variable a vinculada a ob2 Abel Federico Pérez Hernández 40
    • Ejemplo #1: asignar un valor a a en los objetos ob1 y ob2 y después mostrar dicho valor #include <iostream.h> class myclass { //privado a myclass int a; public: void set_a(int num); int get_a(); } void myclass::set_a(int num) { a = num; } void myclass::get_a() { return a; } Abel Federico Pérez Hernández 41
    • Ejemplo #1: asignar un valor a a en los objetos ob1 y ob2 y después mostrar dicho valormain (){ myclass ob1, ob2; ob1.set_a(10); ob2.set_a(99); cout << ob1.get_a() << “n”; cout << ob2.get_a() << “n”; return 0;} Abel Federico Pérez Hernández 42
    • Ejemplo #2: la siguiente función main() producirá un error de compilación#include <iostream.h>main (){ myclass ob1, ob2; ¿Por qué? ob1.a = 10; //Error! no se puede acceder a un ob2.a = 99; //miembro privado mediante //funciones no miembro cout << ob1.get_a() << “n”; cout << ob2.get_a() << “n”; return 0;} Abel Federico Pérez Hernández 43
    • Ejemplo #2: la siguiente función main() producirá un error de compilación#include <iostream.h>main (){ myclass ob1, ob2; ob1.a = 10; //Error! no se puede acceder a un ob2.a = 99; //miembro privado mediante //funciones no miembro cout << ob1.get_a() << “n”; cout << ob2.get_a() << “n”; return 0;} Abel Federico Pérez Hernández 44
    • Ejemplo #3: declaración de a como miembro público#include <iostream.h>class myclass {public: //a es pública y no hace falta set_a() o get_a() int a;};main (){ myclass ob1, ob2; ob1.a = 10; //se accede a “a” mediante “.” ob2.a = 99; cout << ob1.a << “n”; cout << ob2.a << “n”; return 0;} Abel Federico Pérez Hernández 45
    • Ejemplo #4: crea una clase stack que implementa una pila que guarda caracteres#include <iostream.h>#define SIZE 10//Declara una clase pila de caracteresclass stack { char stck[SIZE]; //guarda la pila int tos; //índice de la cabeza de la pilapublic: void init(); //inicializa la pila void push(char ch); //mete carácter en la pila char pop(); //saca carácter de la pila};//Inicializa la pilavoid stack::init() { tos = 0;} Abel Federico Pérez Hernández 46
    • Ejemplo #4: crea una clase stack que implementa una pila que guarda caracteres//Mete un caráctervoid stack::push(char ch) { if(tos == SIZE) { cout << “La pila está llena”; return; } stck[tos] = ch; tos++;}//Saca un carácterchar stack::pop() { if(tos == 0) { cout << “La pila está vacía”; return 0; //nulo cuando la pila está vacía } tos--; return stck[tos];} Abel Federico Pérez Hernández 47
    • Ejemplo #4: crea una clase stack que implementa una pila que guarda caracteresmain() { stack s1, s2; //crea dos pilas int i; //inicializa las pilas s1.init(); s2.init(); s1.push(‘a’); s2.push(‘x’); s1.push(‘b’); s2.push(‘y’); s1.push(‘c’); s2.push(‘z’); for(i=0; i<3; i++) cout << “saca de s1: “ << s1.pop() << “n”; for(i=0; i<3; i++) cout << “saca de s2: “ << s2.pop() << “n”; return 0;} Abel Federico Pérez Hernández 48
    • Salida del ejemplo #4Saca de s1: cSaca de s1: bSaca de s1: aSaca de s2: zSaca de s2: ySaca de s2: x Abel Federico Pérez Hernández 49
    • Observaciones sobre el programaClase stack contiene dos variables privadas: stck: guarda los caracteres enviados a la pila tos: contiene el indice de la cabeza de la pilaClase stack tiene tres funciones publicas: init(): inicializa la pila push(): mete un carácter a la pila pop(): saca un carácter de la pilaDentro de main() se crean dos pilas independientes s1 ys2 Cada objeto tiene su copia de stck y tos Todos los objetos de la clase stack comparten las funciones miembro Federico Pérez Hernández Abel 50
    • Diferencias entre C y C++En C, se especifica una lista de parámetrosvacía mediante void, mientras que en C++ esopcional. C: char funcion(void); En C++ es redundante C++: char funcion(); En C, no se dice nada sobre los parámetrosEn C++, todas las funciones deben estar enforma de prototipo, mientras que en C esopcional. Abel Federico Pérez Hernández 51
    • Diferencias entre C y C++En C++, si una función se declara paraque devuelva un valor, entonces debehacerlo, mientras que en C nonecesariamente.En C, las variables locales se debendeclarar sólo al principio de un bloque,mientras que en C++ se pueden declararen cualquier lugar. Abel Federico Pérez Hernández 52
    • Ejemplo #1 de diferencias entre C y C++En un programa en C, es una práctica comúndeclarar main( ) como se muestra a continuacióncuando no toma argumentos de la línea deórdenes: main (void)Pero en C++, el uso de void es redundante: main( ) Abel Federico Pérez Hernández 53
    • Ejemplo #2: este programa no compilará ¿por qué?#include <iostream.h>main() { int a, b, c; cout << “Introduzca dos números: ”; cin >> a >> b; c = sum(a, b); cout << “La suma es: ” << c; return 0;}sum(int a, int b) { return a+b;} Abel Federico Pérez Hernández 54
    • Ejemplo #2: este programa no compilará porque sum() no está como prototipo#include <iostream.h>int sum(int a, int b);main() { int a, b, c; cout << “Introduzca dos números: ”; cin >> a >> b; c = sum(a, b); cout << “La suma es: ” << c; return 0;}//Esta función necesita un prototiposum(int a, int b) { return a+b;} Abel Federico Pérez Hernández 55
    • Ejemplo #3: declaración de variables locales en cualquier lugar#include <iostream.h>main() { int i; //variables locales declaradas al //principio cout << “Introduzca un número: ”; cin >> i; //Calcula el factorial int j, fact=1; //variables declaradas después //de las sentencias de acción for(j=i; j>=1; j--) fact = fact * j; cout << “El factorial es: ” << fact; return 0;} Abel Federico Pérez Hernández 56
    • Ventajas de C++ en la declaración de variables localesLa posibilidad de declarar variableslocales cerca del lugar donde se usan porprimera vez ayuda a: Clarificar el código Prevenir efectos laterales no deseados Abel Federico Pérez Hernández 57
    • Introducción a la sobrecarga de funciones Mecanismo que permite a C++ adquirir un tipo de polimorfismo. Base que permite al entorno de programación de C++ ampliarse de manera dinámica. com eFunción 1 part part Función 2 e com nombre a condición que ra difie difie argumentos ra Tipo Abel Federico Pérez Hernández Número 58
    • Sobrecarga de funcionesPrincipal ventaja: Ayudan a reducir la complejidad de un programa porque permite que operaciones relacionadas se referencien con el mismo nombre.¿Cómo sobrecargar una función? Declarar y definir todas las versiones requeridas. El compilador seleccionará automáticamente la versión correcta para llamar con base en el tipo o número de argumentos. Abel Federico Pérez Hernández 59
    • Ejemplo #1: sobrecarga de la función abs( ) para calcular el valor absoluto#include <iostream.h>/*Contra ejemplo: la biblioteca estándar de C contiene las funciones abs(), labs() y fabs() que devuelven el valor absoluto de un entero, de un largo y de un real, resp. *///Sobrecarga abs() de tres formasint abs(int n);long abs(long n);double abs(double n);main () {cout << “Valor abs de –10: ” << abs(-10) << “n”;cout << “Valor abs de –10L: “ << abs(-10L) << “n”;cout << “Valor abs de –10.01: ” << abs(-10.01) << “n”; return 0; Abel Federico Pérez Hernández 60}
    • Ejemplo #1: sobrecarga de la función abs( ) para calcular el valor absoluto//abs( ) para enterosint abs(int n) { cout << “Con un entero abs()n”; return n < 0 ? –n : n;}//abs( ) para largoslong abs(long n) { cout << “Con un largo abs()n”; return n < 0 ? –n : n;}//abs( ) para realesdouble abs(double n) { cout << “Con un real abs()n”; return n < 0 ? –n : n;} Abel Federico Pérez Hernández 61
    • Ejemplo #2: sobrecarga de la función date( ) para aceptar fecha como cadena/entero#include <iostream.h>//fecha como cadenavoid date(char *date);//fecha en númerosvoid date(int month, int day, int year);main() { date(“8/23/95”); date(8, 23, 95); return 0;}//Fecha como cadenavoid date(char *date) { cout << “Fecha: ” << date << “n”;} Abel Federico Pérez Hernández 62
    • Ejemplo #2: sobrecarga de la función date( ) para aceptar fecha como cadena/entero//Fecha como enterosvoid date(int month, int day, int year) { cout << “Fecha: ” << month << “/”; cout << day << “/” << year << “n”;} Abel Federico Pérez Hernández 63
    • Ejemplo #3: las versiones de la función f1 difieren en el número de argumentos#include <iostream.h>void f1(int a);void f1(int a, int b);main() { f1(10); f1(10, 20); return 0;}void f1(int a) { cout << “En f1(int a)n”;}void f1(int a, int b) { cout << “En f1(int a, int b)n”;} Abel Federico Pérez Hernández 64
    • Ejemplo #4: el tipo devuelto no basta para permitir la sobrecarga de funciones//Este fragmento es incorrecto y no se compilaráint f1(int a);double f1(int a);...f1(10); //¿A que función llama el compilador? Abel Federico Pérez Hernández 65
    • Bibliografía Diapositivas PowerPoint de Sonia Mendoza Chapasmendoza@cs.cinvestav.mx Fundamentos de programación C/C++, Ernesto Peñaloza Romero, Cuarta Edición, Ed. Alfaomega. Abel Federico Pérez Hernández 66